Скрипт на ковку/шитье бодов

  • Не в сети
  • Bonart
  • Elite Member
  • Сообщений: 127
  • Thanks: 0
Не в сети

Re: RE: Скрипт на ковку/шитье бодов

#7329
Помогу с данным скриптом в обмен на помощь в другом скрипте - на получение хертвудов.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Не в сети
  • boom
  • Senior Member
  • Сообщений: 34
  • Thanks: 0
Не в сети

Re: RE: Скрипт на ковку/шитье бодов

#7332
Я уже разобрался. А что у тя не получается с хартвудами?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • cocaine_deluxe аватар
    Не в сети
  • cocaine_deluxe
  • Senior Member
  • Сообщений: 23
  • Thanks: 0
cocaine_deluxe аватар
Не в сети

Re: RE: Скрипт на ковку/шитье бодов

#7334
не хрен скриптами пользоваться, куйте и шейте в ручную, я всё делаю руками

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Jason аватар
    Не в сети
  • Jason
  • Spammer
  • Сообщений: 399
  • Thanks: 2
Jason аватар
Не в сети

Re: RE: Скрипт на ковку/шитье бодов

#7373
народ ну же поделитесь кто нибудь, стоят ведь шайкой шьют и куют в афк :)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Не в сети
  • Charisma
  • Premium Member
  • Сообщений: 115
  • Thanks: 0
Не в сети

Re: RE: Скрипт на ковку/шитье бодов

#7376
джексон забей на них давай организуем свою шайку крафтеров епт))) я тебе помогу )) епт))

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Не в сети
  • boom
  • Senior Member
  • Сообщений: 34
  • Thanks: 0
Не в сети

Re: RE: Скрипт на ковку/шитье бодов

#7677
могу обменять скрипт на серебро. ICQ 591707107

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Allice [FreeZzy] аватар
    Не в сети
  • Allice [FreeZzy]
  • Пророк
  • United Pirates Guild
  • Сообщений: 3317
  • Thanks: 53
Allice [FreeZzy] аватар
Не в сети

Re: RE: Скрипт на ковку/шитье бодов

#7698
Когда нибудь макросы убьют этот сервер (А сколько уже задонейчено в музей и билиотеку, врядли кто руками рубил)

Вас ожидает в будущем произвольное появление кнопок и айди их в гампах на квесты и крафт =)) (Это шутка наверное. А может и не шутка)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Alastar аватар
    Не в сети
  • Alastar
  • Администрация
  • Сообщений: 1041
  • Thanks: 87
Alastar аватар
Не в сети

Re: RE: Скрипт на ковку/шитье бодов

#7700

FreeZzy написал:
Когда нибудь макросы убьют этот сервер (А сколько уже задонейчено в музей и билиотеку, врядли кто руками рубил)

Вас ожидает в будущем произвольное появление кнопок и айди их в гампах на квесты и крафт =)) (Это шутка наверное. А может и не шутка)

С каждым открытым окном крафта разные айди?;)
PS А что? Возможно и такое)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Не в сети
  • Karyuudo
  • Senior Member
  • Сообщений: 25
  • Thanks: 0
Не в сети

Re: RE: Скрипт на ковку/шитье бодов

#7702
Возможно, используется иногда для второго цифрового пароля

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Не в сети
  • darkshadows
  • Premium Member
  • Сообщений: 100
  • Thanks: 0
Не в сети

Re: RE: Скрипт на ковку/шитье бодов

#8512
так где в скрипте кривую кнопку пофиксить? )))

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Не в сети
  • darkshadows
  • Premium Member
  • Сообщений: 100
  • Thanks: 0
Не в сети

Re: RE: Скрипт на ковку/шитье бодов

#8583
продам рабочий скрипт в обмен на сильвер

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Не в сети
  • HxCKid
  • Junior Member
  • Сообщений: 4
  • Thanks: 0
Не в сети

Re: RE: Скрипт на ковку/шитье бодов

#9412
Внутри функций слишком много подфункций, возвращается назад в функцию невесть что, просчитать не просто. Координаты кнопок явно не написаны в виде x,y даже не ищите. Кнопки должны быть зашифрованы в виде уникального идентификатора(какого угодно вида), либо в виде идентификатора гампа(скорее всего в шеснадцатеричном представлении).

По идее надо делать так:
1. Узнать какие кнопки не работают или срабатывает не то что нужно;
2. Узнать ID нерабочих кнопок;
3. Найти их в скрипте;
4. Составить алгоритм работы макроса с новыми кнопками;
5. Допилить скрипт.

Либо узнать у автора скрипта где и как зашифрованы гампы, хотя вряд ли он даст такую информацию.

[u:1lemh7cq]З.ы. Все что описал выше относится конечно же к s7BodFiller скрипту[/u:1lemh7cq]

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Alastar аватар
    Не в сети
  • Alastar
  • Администрация
  • Сообщений: 1041
  • Thanks: 87
Alastar аватар
Не в сети

Re: RE: Скрипт на ковку/шитье бодов

#9413

HxCKid написал:
Либо узнать у автора скрипта где и как зашифрованы гампы, хотя вряд ли он даст такую информацию.
[/u]

Razor в помощь.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Не в сети
  • darkshadows
  • Premium Member
  • Сообщений: 100
  • Thanks: 0
Не в сети

Re: RE: Скрипт на ковку/шитье бодов

#9418
снимаете галочку - freeshard, в craftInfo исправил только для ткани, остальное мне не нужно было
;===================================================
; Script Name:  s7BodFiller
; Author:  snicker7
; Version: 2.6.1c
; Client Tested with: 7.0.1.1
; EUO version tested with: 1.5
; Shard OSI / FS:  OSI / FS
; Revision Date:  04/25/10
; Public Release:  09/23/05
; Global Variables Used: no
; Purpose:  Fills all smith and tailor large BODs and small BODs. Extremely easy setup, automatic. Also callable to fill a specific BOD from within another script should you so wish to do that. Works flawlessly on both EA shards AND RunUO Post-AOS freeshards!! Packy support and dropping finished BODs to a container or BOD book.
;====================================================
; Bugfixes in 2.6.1c:
; =- Works with new SA changes on EA shards. Should remain fully functional on freeshards.
; =- Script now comes with 2 versions of craftInfo.txt because of the major changes on EA shards.
; =- Big thanks to sciondal on the EUO forums for updating craftInfo.txt for EA shards.
; =- Tool making subroutine now looks up categories and selections on the craft menu from craftInfo.txt. Ensures accuracy.
; =- Fixed one missing BOD gump size that would cause occasional hangs.
; =- Some optimizations and other crap.
; =- Updated some mess for UO Legends freeshard.
; =- Adjusted gump sizes for recent EA shard changes.
;====================================================
set %pathlib #pathlib
if 1_5 in #euover
	set %pathlib

; ===================================================================== ;
; ----------------------Do Not Edit Beyond Here------------------------ ;
; ===================================================================== ;
namespace push
namespace local _s7BFiller
set #lpc 60
set %debugMode #false
;thankin RK for the below:
set %freeshard _ , #shard , _ notin _TC1_origin_pacific_sonoma_baja_legends_atlantic_chesapeake_catskills_lake , #spc , austin_napa , #spc , valley_lake , #spc , superior_great , #spc , lakes_siege , #spc , perilous_europa_drachenfels_oceania_wakoku_formosa_arirang_balhae_asuka_yamato_mugen_hokuto_misuho_izumo_sakura_
set %nonSEFreeshard _ , #shard , _ in _Defiance , #spc , AOS_ABC , #spc , UO_
set %craftinfo craftInfo.txt
set %craftinfo_FS craftInfo_FS.txt
if %0 > 0
{
	if %1 = exists 2
		set #result #true
		exit
	set %s7BFCalled #true
	gosub getEUOVer
	set %s7BFBodID %1
	set %s7BFSecureID %2
	set %freeshard %3
	if %freeshard
		set %craftinfo %craftInfo_FS
	gosub craftInfoCheck
	gosub checkSBar
	set %maxweight #maxweight
	if %maxweight > 420
		set %maxweight 420
	for !fillbod 1 1
	{
		set !fillbod 0
		gosub s7GetBODData
		gosub getBodName %s7BFBodID
		set %s7BF_BodName #result
		if %s7BFBodAmountToMake = 0 2
			namespace pop
			exit
		repeat
		{
			gosub MakeItems
			menu set s7BFMenuStatus Filling %s7BF_BodName BOD...
			gosub FillBod
		}
		until #result
		wait 20
		;gosub closeGump generic_gump %craftgumpx %craftgumpy
		gosub returnResources
		namespace pop
		exit
	}
}
if %0 = 0 || %0 = N/A
{
	set %s7BFCalled #false
	gosub getEUOVer
	gosub craftInfoCheck
	gosub initMenu
	menu get chkFreeshard
	set %freeshard #menures
	if %freeshard
		set %craftinfo %craftInfo_FS
	menu get chkFillLbods
	set %filllbods #menures
	gosub checkSBar
	set %maxweight #maxweight
	if %maxweight > 420
		set %maxweight 420
	gosub makingMenu
	if %euoVer < 15000 || %debugMode
	&#123;
		finditem %s7BFSecureID C
		set %returnResources #false
		if #findbagID <> X && &#40; #findbagID <> #charid || %s7BFSecureID = #backpackid &#41;
		&#123;
			set %returnResources #true
			set %s7BFMotherSecure #findbagid
			set #lobjectid %s7BFMotherSecure
			menu set s7BFMenuStatus Opening Mother Secure...
			gosub s7WaitForAction 12
			event macro 17 0
			gosub s7WaitForVars contid = %s7BFMotherSecure 5
			if #result
				contpos 400 500
			if ! #result
			&#123;
				display ok The mother secure was unable to be opened correctly.$$The script may still continue provided that the secure opens correctly &#40;which it probably won't&#41; but resource returning will not function properly.
				set %returnResources #false
			&#125;
		&#125;
	&#125;
	set #lobjectid %s7BFSecureID
	menu set s7BFMenuStatus Opening secure...
	gosub s7WaitForAction 12
	event macro 17 0
	gosub s7WaitForVars contid = %s7BFSecureID 5
	if #result
		contpos 0 500
	if ! #result
		display ok The secure was unable to be opened.$$The script may still continue if you have some resources in your backpack, but most likely you're going to get an out of resources error.
	if %fillall 2
		finditem EYM C_ , #backpackid
		set %s7BF_Bods2FillCnt #findcnt
	set %s7BF_Bods2FillCnt2 %s7BF_Bods2FillCnt
	set %bodi2 0
	for %BODi 1 %s7BF_Bods2FillCnt
	&#123;
		set %bodi2 %bodi2 + 1
		set %s7BFBodID %s7BF_BodID . %BODi
		if %fillall 2
			finditem EYM %bodi c_ , #backpackid
			set %s7BFBodID #findid
		gosub getBodName %s7BFBodID
		set %s7BF_BodName #result
		menu set s7BFMenuStatus Getting bod data for %s7BF_BodName BOD # , %bodi2 of %s7BF_Bods2FillCnt2
		gosub s7GetBODData
		if ! #result
		&#123;
			if %s7BFLBodIDs <> N/A
				set %s7BFLBodIDs %s7BFLBodIDs , _ , %s7BFBodID
			if %s7BFLBodIDs = N/A
				set %s7BFLBodIDs %s7BFBodID
		&#125;
		if #result && %s7BFBodAmountToMake > 0
		&#123;
			repeat
			&#123;
				gosub MakeItems
				menu set s7BFMenuStatus Filling %s7BF_BodName BOD...
				gosub FillBod
			&#125;
			until #result
		&#125;
		if %s7BFFBodContainer <> N/A
		&#123;
			if %fillall
				set %bodI %bodI - 1
			if %fillAll && %bodi2 = %s7BF_Bods2FillCnt
				set %bodI %s7BF_Bods2FillCnt
			finditem %s7BFFBodContainer
			set %s7BFBodContType #findtype
			gosub s7MoveToCont %s7BFBodID %s7BFFBodContainer #findbagID 12_24
			if %s7BFBodContType = dym
			&#123;
				gosub s7WaitForVars contsize = !bodGumpContSize contname = generic_gump 2
				if #result
				&#123;
					set %cx #contposx + 10
					set %cy #contposy + 10
					click %cx %cy f r dmc
				&#125;
			&#125;
			wait 10
		&#125;
		gosub returnResources
	&#125;
	if %s7BFLBodIDs <> N/A && %fillLbods
	&#123;
		finditem %s7BFLBodIDs C_ , #backpackid
		set %totallbods #findcnt
		set %totallbods2 #findcnt
		set %bodi2 0
		for %BODi 1 %totallbods2
		&#123;
			set %bodi2 %bodi2 + 1
			finditem %s7BFLBodIDs %bodi C_ , #backpackid
			menu set s7BFMenuStatus Getting LBOD data for LBOD %bodI2 of %totallbods
			set %s7BFBodID #findid
			gosub s7GetLBodData
			if %S7BFLBODPIECES > 0
			&#123;
				menu set s7BFMenuStatus Filling LBOD, could take a few seconds...
				gosub s7FillLBod
				if %s7BFFBodContainer <> N/A
				&#123;
					wait 20
					gosub s7GetLBodData
					if %s7BFLBodPieces = 0
					&#123;
						set %bodi %bodi - 1
						set %totallbods2 %totallbods2 - 1
						finditem %s7BFFBodContainer
						gosub s7MoveToCont %s7BFBodID %s7BFFBodContainer #findbagID 12_24
					&#125;
				&#125;
			&#125;
		&#125;
	&#125;
	;gosub closeGump generic_gump %craftgumpx %craftgumpy
	menu set s7BFMenuStatus ALL DONE!!
	halt
&#125;

sub returnResources
	if &#40; ! %returnResources && %euoVer < 15000 &#41; || %s7BFSecureID = #backpackid
		return
	set %resourceTypes CUI_BUI_AUI_DUI_FUI_GUI_ENK_JJG_GUF
	for %_RR 1 1
	&#123;
		finditem %resourceTypes C_ , #backpackid
		if #findkind <> -1
		&#123;
			set %_RR 0
			gosub s7MoveToCont #findid %s7BFSecureID %s7BFMotherSecure 12_24
		&#125;
	&#125;
return

sub checkSbar
	if #charname = N/A
	&#123;
		event macro 8 2
		gosub s7WaitForVars contsize = 432_184 contname = status_gump 2
		if #result
		&#123;
			set %tVar #contposx , _ , #contposy
			event macro 10 2
			for %i 1 40
			&#123;
				wait 1
				if #contposx , _ , #contposy <> %tvar
					set %i 40
			&#125;
			contpos 0 #cliyRes
		&#125;
	&#125;
return

sub craftInfoCheck
	set !cgiItemName N/A
	call %pathlib , %craftInfo wsf
	if !cgiItemName <> dagger
	&#123;
		display ok ERROR:$
			+ , %craftInfo , #spc , is an incorrect version or$
			+was not located. The correct location for$
			+ , %craftInfo , #spc , should be:$ , #curpath , $
			+so please make sure that , #spc , %craftInfo , #spc , is$
			+in that location and the latest version.
		halt
	&#125;
return

sub makingMenu
	menu clear
	menu window size 300 20
	menu window color black
	menu window title s7BODFiller
	menu font color lime
	menu font bgcolor black
	menu font name arial
	menu font size 8
	menu text s7BFMenuStatus 2 2 Initializing...
	set %menux #clileft
	set %menuy #clitop + #cliyres
	menu show %menux %menuy
return

sub initMenu
	set #lpc 75
	menu clear
	menu window size 260 180
	menu window color black
	menu window title s7BodFiller
	menu font color lime
	menu font bgcolor black
	menu font name Arial
	menu font size 12
	menu font style u
	menu text title 2 2 s 7 B o d F i l l e r
	menu font style
	menu font size 8
	menu text lblSelectedBods 4 24 Selected BODs:
	menu list create lstSelectedBods 4 40 130 100
	menu check chkFreeShard 136 40 100 14 %freeshard Freeshard?
	menu check chkFillLBods 136 58 150 18 #true Fill Large Bods?
	menu button btnChooseSecure 136 76 120 20 Choose Secure
	menu button btnChooseContainer 136 98 120 20 Store finished BODs?
	menu button btnBodAdd 4 142 31 20 add
	menu button btnBodAddAll 37 142 31 20 all
	menu button btnBodDel 70 142 31 20 del
	menu button btnBodClr 103 142 31 20 clr
	menu text s7BFMenuStatus 4 164 Please select the BODs and secure container...
	set %readyToGoAll #false
	set %readyToGo #false
	set #menubutton N/A
	menu show
	for %_menu 1 1
	&#123;
		set %_menu 0
		if #menubutton <> N/A
		&#123;
			if btnFill in #menubutton
			&#123;
				set %fillall #false
				if all in #menubutton 2
					set %fillall #true
					set %_menu 1
				if all notin #menubutton && %readyToGo
					set %_menu 1
			&#125;
			if btnFill notin #menubutton
			&#123;
				str del #menubutton 1 3
				gosub #strRes
			&#125;
			set #menubutton N/A
		&#125;
		if %s7BFSecureID <> N/A && %s7BF_Bods2FillCnt > 0 && ! %readyToGo 2
			menu button btnFill 196 142 60 20 Fill
			set %readyToGo #true
		if &#40; %s7BFSecureID = N/A || %s7BF_Bods2FillCnt = 0 &#41; && %readyToGo 2
			menu delete btnFill
			set %readyToGo #false
		if %s7BFSecureID <> N/A && ! %readyToGoAll 2
			menu button btnFillAll 196 120 60 20 Fill All
			set %readyToGoAll #true
		if %s7BFSecureID = N/A && %readyToGoAll 2
			menu delete btnFillAll
			set %readyToGoAll #false
		wait 1
	&#125;
	set #lpc 10
return

sub chooseContainer
	menu set s7BFMenuStatus Please target your BOD book or container:
	gosub s7GetTarget
	set %s7BFFBodContainer #result
	gosub s7GetProperty #result
	str pos #property $
	set #strRes #strres - 1
	str left #property #strres
	set %strres #strres
	str len %strres
	if #strres > 14
	&#123;
		str left %strRes 14
		str ins #strRes ... 15
		set %strRes #strRes
	&#125;
	str lower %strRes
	menu set btnChooseContainer Drop: #strRes
	menu set s7BFMenuStatus You have chosen " , #strRes , " as your drop.
return

sub chooseSecure
	menu set s7BFMenuStatus Please target your secure:
	gosub s7GetTarget
	set %s7BFTargetedSecure #result
	set %s7BFPackAnimalID N/A
	finditem %s7BFTargetedSecure
	if #findtype in bo_wn_zgb
	&#123;
		if %euoVer < 15000 2
			menu set s7BFMenuStatus Pack animals are only supported in EUO 1.5+.
			return
		menu set s7BFMenuStatus Pack animal targeted. Opening pack...
		set %s7BFPackAnimalID %s7BFTargetedSecure
		set %_tCont #contid
		exevent popup %s7BFPackAnimalID 11
		gosub s7WaitForVars contid <> %_tCont conttype = zjf 4
		if ! #result 2
			menu set s7BFMenuStatus Failed to open pack animal pack.
			return
		set %s7BFSecureID #contid
	&#125;
	if #findtype notin bo_wn_zgb
		set %s7BFSecureID %s7BFTargetedSecure
	if %s7BFPackAnimalID <> N/A
		gosub s7GetProperty %s7BFPAckAnimalID
	if %s7BFPackAnimalID = N/A
		gosub s7GetProperty %s7BFSecureID
	str pos #property $
	set #strRes #strres - 1
	str left #property #strres
	str lower #strRes
	menu set btnChooseSecure Secure: #strRes
	menu set s7BFMenuStatus You have chosen " , #strRes , " as your secure.
return

sub BodClr
	set %s7BF_Bods2FillCnt 0
	menu delete lstSelectedBods
	menu list create lstSelectedBods 4 40 130 100
return

sub BodDel
	menu get lstSelectedBods
	for %b2fI #menures %s7BF_Bods2FillCnt
	&#123;
			set %b2fioffset %b2fi + 1
			set %s7BF_BodID . %b2fi %s7BF_BodID . %b2fioffset
			set %s7BF_BodName . %b2fi %s7BF_BodName . %b2fioffset
	&#125;
	set %s7BF_Bods2FillCnt %s7BF_Bods2FillCnt - 1
	if %s7BF_Bods2FillCnt < 0
		set %s7BF_Bods2FillCnt 0
	menu delete lstSelectedBods
	menu list create lstSelectedBods 4 40 130 100
	if %s7BF_Bods2FillCnt > 0
	&#123;
		for %b2fi 1 %s7BF_Bods2FillCnt
		&#123;
			str lower %s7BF_BodName . %b2fi
			menu list add lstSelectedBods #strRes
		&#125;
	&#125;
return

sub BodAddAll
	finditem EYM C_ , #backpackid
	if #findkind = -1 2
		menu set s7BFMenuStatus No BODs found in backpack...
		return
	for %b2fi 1 1
	&#123;
		finditem EYM C_ , #backpackid
		if #findkind <> -1
		&#123;
			gosub BodAdd #findid
			ignoreitem #findid BODIgnore
			set %b2fi 0
		&#125;
	&#125;
	ignoreitem reset BODIgnore
return

sub BODAdd
	set %bodtype EYM
	if %0 = 0
	&#123;
		menu set s7BFMenuStatus Please target the BOD to add...
		gosub s7GetTarget
	&#125;
	if %0 > 0
		set #result %1
	finditem #result
	if #findtype <> %bodtype
	&#123;
		menu set s7BFMenuStatus That is not a BOD!
		return
	&#125;
	if %s7BF_Bods2FillCnt <> 0
	&#123;
		for %BBI 1 %s7BF_Bods2FillCnt
		&#123;
			if #findid = %s7BF_BodID . %BBI
			&#123;
				menu set s7BFMenuStatus That BOD is already in the list.
				return
			&#125;
		&#125;
	&#125;
	set %s7BF_Bods2FillCnt %s7BF_Bods2FillCnt + 1
	set %s7BF_BodID . %s7BF_Bods2FillCnt #findid
	gosub getBodName #findid
	set %s7BF_BodName . %s7BF_Bods2FillCnt #result
	str lower %s7BF_BodName . %s7BF_Bods2FillCnt
	menu list add lstSelectedBods #strRes
	menu delete status
return

;===================================;
;= PARSING SUBS ====================;
;===================================;

sub getBodName
	gosub s7GetProperty %1 A , #spc , Bulk , #spc , Order , #spc , Deed$
	set %s7BFLbodExceptional n
	if exceptional in #property
		set %s7BFLbodExceptional x
	str pos #property make:
	set %pos #strRes + 3
	str del #property 1 %pos
	set %s7BFItemString #strRes
	str pos %s7BFItemString :
	set %pos #strRes + 1
	str pos %s7BFItemString $
	set %len #strRes - %pos
	str mid %s7BFItemString %pos %len
	set %s7BFLBodCnt #strRes
	str del %s7BFItemString 1 5
	set %s7BFItemString #strRes
	str pos %s7BFItemString :
	set #strres #strres - 1
	str left %s7BFItemString #strRes
	set !gbi_item1 #strRes
	if large , #spc , bulk in #property
	&#123;
		if cutlass in !gbi_item1 || katana in !gbi_item1 || scimitar in !gbi_item1 || broad in !gbi_item1 || longsword in !gbi_item1 || viking in !gbi_item1
			set %lbod Swords
		if kryss in !gbi_item1 || spear in !gbi_item1 || warfork in !gbi_item1 || dagger in !gbi_item1
			set %lbod Piercing
		if axe in !gbi_item1 && war notin !gbi_item1
			set %lbod Axes
		if mace in !gbi_item1 || maul in !gbi_item1 || hammer in !gbi_item1 || war , #spc , axe in !gbi_item1
			set %lbod Bashing
		if bardiche in !gbi_item1 || halberd in !gbi_item1
			set %lbod Polearms
		if chainmail in !gbi_item1
			set %lbod Chainmail
		if ringmail in !gbi_item1
			set %lbod Ringmail
		if gorget in !gbi_item1
			set %lbod Studded , #spc , Set
		if plate in !gbi_item1 || plate in !gbi_item
			set %lbod Platemail
		if sandals in !gbi_item1
			set %lbod Footwear , #spc , Set
		if gorget in !gbi_item1
			set %lbod Leather , #spc , Set
		if skirt in !gbi_item1
			set %lbod Female , #spc , Set
		if bone in !gbi_item1
			set %lbod Bone , #spc , AR
		if bandana in !gbi_item1
			set %lbod The , #spc , Gypsy
		if skullcap in !gbi_item1
			set %lbod The , #spc , Pirate
		if straw in !gbi_item1
			set %lbod The , #spc , Farmer
		if wizard in !gbi_item1
			set %lbod The , #spc , Wizard
		if floppy in !gbi_item1
			set %lbod Fishergirl
		if feathered in !gbi_item1
			set %lbod Town , #spc , Crier
		if bonnet in !gbi_item1
			set %lbod The , #spc , Lady
		if jester in !gbi_item1
			set %lbod The , #spc , Jester
		if tricorne in !gbi_item1
			set %lbod The , #spc , Hat-Set
		return %s7BFLbodCnt , %s7bflbodexceptional , #spc , large , #spc , bod , #spc , " , %lbod , "
	&#125;
	if small , #spc , bulk in #property
	return %s7BFLbodCnt , %s7BFLBodExceptional , #spc , !gbi_item1

;///////////////////////////////////;
; getYContsize
; gets the height of a gump, used for clicking the combine button
;///////////////////////////////////;
sub getYContsize
	str len #contsize
	set %CSL #strRes
	str pos #contsize _
	set %CSFR %CSL - #strRes
	str right #contsize %CSFR
return #strRes

;///////////////////////////////////;
; s7GetBodData
; parses the property of the bod and makes a call to Kal's craftinfo.txt to get the information about the item.
;///////////////////////////////////;
sub s7GetBODData
	finditem %s7BFBodID C_ , #backpackid
	gosub s7GetProperty %s7BFBodID A , #spc , Bulk , #spc , Order , #spc , Deed$
	if large , #spc , bulk in #property
		return #false
	if #findcol = 1155
	&#123;
		set %s7BFBodType Tailor
		set %s7BFBodMaterial 0
		set %s7BFBodMatFindCol N/A
		if boots in #property || shoes in #property || sandals in #property || leather in #property || studded in #property 2
			set %s7BFBodMatFindCol 0
			set %s7BFBodMaterial 1
		if cloth in #property
			set %s7BFBodMaterial 0
		if normal , #spc , leather in #property || bone in #property 2
			set %s7BFBodMatFindCol 0
			set %s7BFBodMaterial 1
		if spined , #spc , leather in #property 2
			set %s7BFBodMatFindCol 2220
			set %s7BFBodMaterial 2
		if horned , #spc , leather in #property 2
			set %s7BFBodMatFindCol 2117
			set %s7BFBodMaterial 3
		if barbed , #spc , leather in #property 2
			set %s7BFBodMatFindCol 2129
			set %s7BFBodMaterial 4
	&#125;
	if #findcol = 1102
	&#123;
		set %s7BFBodType Smith
		set %s7BFBodMaterial 1
		set %s7BFBodMatFindCol 0
		if iron , #spc , ingots in #property && shadow notin #property 2
			set %s7BFBodMatFindCol 0
			set %s7BFBodMaterial 1
		if dull , #spc , copper , #spc , ingots in #property 2
			set %s7BFBodMatFindCol 2419
			set %s7BFBodMaterial 2
		if shadow , #spc , ingots in #property 2
			set %s7BFBodMatFindCol 2406
			set %s7BFBodMaterial 3
		if shadow , #spc , iron , #spc , ingots in #property 2
			set %s7BFBodMatFindCol 2406
			set %s7BFBodMaterial 3
		if copper , #spc , ingots in #property && dull , #spc , copper notin #property 2
			set %s7BFBodMatFindCol 2413
			set %s7BFBodMaterial 4
		if bronze , #spc , ingots in #property 2
			set %s7BFBodMatFindCol 2418
			set %s7BFBodMaterial 5
		if gold , #spc , ingots in #property 2
			set %s7BFBodMatFindCol 2213
			set %s7BFBodMaterial 6
		if agapite , #spc , ingots in #property 2
			set %s7BFBodMatFindCol 2425
			set %s7BFBodMaterial 7
		if verite , #spc , ingots in #property 2
			set %s7BFBodMatFindCol 2207
			set %s7BFBodMaterial 8
		if valorite , #spc , ingots in #property 2
			set %s7BFBodMatFindCol 2219
			set %s7BFBodMaterial 9
	&#125;
	set %s7BFBodExceptional #false
	if exceptional in #property
		set %s7BFBodExceptional #true
	if make: , #spc , 10 in #property
		set %s7BFBodAmount 10
	if make: , #spc , 15 in #property
		set %s7BFBodAmount 15
	if make: , #spc , 20 in #property
		set %s7BFBodAmount 20
	str pos #property make:
	set %pos #strRes + 8
	str del #property 1 %pos
	set %s7BFItemString #strRes
	str pos %s7BFItemString :
	set %pos #strRes - 1
	str left %s7BFItemString %pos
	set %s7BFBodItem #strRes
	gosub s7GetBodAmountMade
	set %s7BFBodAmountToMake %s7BFBodAmount - %s7BFBodAmountMade
	set !CGIMATERIALNAME2 N/A
	call %pathlib , %craftInfo %s7BFBodItem
	;====
	;category/selection exceptions
	;====
	if %freeshard && %s7BFBodType = Tailor && #shard <> Alexandria
		set !cgiCategory !cgiCategory - 1
	if %freeshard && %nonSEFreeshard && %s7BFBodType = Tailor && !cgiCategory = 5
		set !cgiSelection !cgiSelection - 2
	;if ! %freeshard && %s7BFBodType = Tailor && !cgiCategory = 7
	;	set !cgiSelection !cgiSelection + 3
	;if ! %freeshard && %s7BFBodType = Tailor && !cgiCategory = 6
	;	set !cgiSelection !cgiSelection + 1
	;====
	;end category/selection exceptions
	;====
	set !cgiSelection !cgiSelection + 1
	if !cgiMaterialName1 = Cloth 2
		set %s7BFBodMatWeight 1
		set %s7BFBodMatType cui_bui_AUI_DUI_FUI_GUI
	if !cgiMaterialName1 = Leather 2
		set %s7BFBodMatWeight 10
		set %s7BFBodMatType JJG
	if !cgiMaterialName1 = ingots 2
		set %s7BFBodMatWeight 1
		set %s7BFBodMatType ENK
return #true

;///////////////////////////////////;
; s7GetBodAmountMade
; sub to get the number of pieces already in the bod ie 15/20, 15
;///////////////////////////////////;
sub s7GetBodAmountMade
	set #lpc 100
	str pos #property make:
	set %pos #strRes + 8
	str del #property 1 %pos
	set %s7BFItemString #strRes
	str pos %s7BFItemString :
	set %pos #strRes + 1
	str pos %s7BFItemString $
	set %len #strRes - %pos
	str mid %s7BFItemString %pos %len
	set %s7BFBodAmountMade #strRes
	set #lpc 10
return

;///////////////////////////////////;
; s7GetLBodData
; parses the lbod property and extracts number of items, names of items, and count/quality of items.
;///////////////////////////////////;
sub s7GetLBodData
	set #lpc 100
	finditem %s7BFBodID C_ , #backpackid
	gosub s7GetProperty %s7BFBodID A , #spc , Bulk , #spc , Order , #spc , Deed$
	set %s7BFLbodExceptional #false
	if exceptional in #property
		set %s7BFLbodExceptional #true
	set %s7BFLBodMaterial 0
	set %s7BFLBodProperty #property
	str pos #property make:
	set %pos #strRes + 3
	str del #property 1 %pos
	set %s7BFItemString #strRes
	str pos %s7BFItemString :
	set %pos #strRes + 1
	str pos %s7BFItemString $
	set %len #strRes - %pos
	str mid %s7BFItemString %pos %len
	set %s7BFLBodCnt #strRes
	str del %s7BFItemString 1 5
	set %s7BFItemString #strRes
	set %s7BFLBodPieces 0
	for %_ 1 1
	&#123;
		str pos %s7BFItemString $
		if #strRes > 0
		&#123;
			set %_ 0
			str pos %s7BFItemString :
			set %pos #strRes + 2
			str pos %s7BFItemString $
			set %len #strRes - %pos
			str mid %s7BFItemString %pos %len
			if #strres = 0
			&#123;
				set %s7BFLBodPieces %s7BFLBodPieces + 1
				str pos %s7BFItemString :
				set #strres #strRes - 1
				str left %s7BFItemString #strRes
				set %s7BFLBodPiece . %s7BFLBodPieces #strRes
			&#125;
			str pos %s7BFITemString $
			str del %s7BFItemString 1 #strRes
			set %s7bfitemstring #strres
		&#125;
	&#125;
	set #lpc 10
return


sub getEUOVer
	set %euoVer #euover
	for %_ 1 1
	&#123;
		str pos %euoVer _
		if #strRes > 0 3
			set %_ 0
			str del %euoVer #strRes 1
			set %euoVer #strRes
	&#125;
return

;===================================;
;= FILLING SUBS ====================;
;===================================;

;///////////////////////////////////;
; FillBod
; opens current bod, clicks combine, targets items in pack
;///////////////////////////////////;
sub FillBod
	set %s7FB_PreLPC #lpc
	set #lpc 200
	ignoreitem reset
	gosub OpenBod %s7BFBodID target
	gosub s7GetProperty %s7BFBodID A , #spc , Bulk , #spc , Order , #spc , Deed$
	gosub s7GetBodAmountMade
	finditem !cgiItemType C_ , #backpackid
	if #findcnt > 0 && %s7BFBodAmountMade < %s7BFBodAmount
	&#123;
		for #findindex 1 #findcnt
		&#123;
			if #findcol <> %s7BFBODMATFINDCOL && %s7BFBODMatFindCol <> N/A
				continue
			if %s7BFBodExceptional
			&#123;
				gosub s7GetProperty #findid
				if exceptional notin #property
					continue
			&#125;
			set #ltargetid #findid
			set #ltargetkind 1
			gosub s7WaitForVars targCurs = 1 2
			if #result
				event macro 22 0
			if ! #result
			&#123;
				gosub s7GetProperty %s7BFBodID A , #spc , Bulk , #spc , Order , #spc , Deed$
				gosub s7GetBodAmountMade
				if %s7BFBodAmountMade < %s7BFBodAmount
				&#123;
					gosub OpenBod %s7BFBodID target
					set #findindex #findindex - 1
				&#125;
			&#125;
			if #findindex < 1
				set #findindex 1
		&#125;
		wait 15
		gosub s7GetProperty %s7BFBodID A , #spc , Bulk , #spc , Order , #spc , Deed$
		gosub s7GetBodAmountMade
	&#125;
	click %tx %ty f r dmc
	set #lpc %S7BF_FBPreLPC
return %s7BFBodAmountMade >= %s7BFBodAmount

;///////////////////////////////////;
; OpenBod
; opens bod with ID passed as %1,
; clicks combine if %2 = "target"
;///////////////////////////////////;
sub OpenBod
	set #lobjectid %1
	set %two %2
	gosub s7WaitForAction 12
	event macro 17 0
	gosub s7WaitForVars contsize in 510_275_510_230_510_275_510_254_510_395_510_347_510_371_510_323_510_182_510_302_510_326_510_350_524_275 contname = generic_gump 4
	if %two = target && #result
	&#123;
		gosub getycontsize
		set %tx #contposx + 140
		set %ty #contposy + #result - 75
		if ! %freeshard
			;set %ty %ty + 25
		click %tx %ty
	&#125;
return #result

sub FillBodOLD
	ignoreitem reset
	set #lobjectid %s7BFBodID
	set %s7BF_FBSuccess #true
	gosub s7WaitForAction 12
	event macro 17 0
	gosub s7WaitForVars contsize in 510_275_510_230_510_275_510_254_510_395_510_347_510_371_510_323_510_182_510_302_510_326_510_350 contname = generic_gump 4
	gosub getycontsize
	set %tx #contposx + 140
	set %ty #contposy + #result - 75
	if ! %freeshard
		set %ty %ty + 25
	click %tx %ty
	wait 10
	targeting:
	gosub s7GetProperty %s7BFBodID A , #spc , Bulk , #spc , Order , #spc , Deed$
	gosub s7GetBodAmountMade
	finditem !cgiItemType C_ , #backpackid
	if #findcnt > 0 && %s7BFBodAmountMade < %s7BFBodAmount
	&#123;
		if %s7BFBodExceptional
		&#123;
			gosub s7GetProperty #findid
			if exceptional notin #property || &#40; #findcol <> %s7BFBODMATFINDCOL && %s7BFBODMatFindCol <> N/A &#41;
			&#123;
				set %s7BF_FBSuccess #false
				ignoreitem #findid
				goto targeting
			&#125;
		&#125;
		ignoreitem #findid
		set #ltargetid #findid
		set #ltargetkind 1
		gosub s7WaitForVars targCurs = 1 2
		if #result 2
			event macro 22 0
			goto targeting
		if ! #result
		&#123;
			set #lobjectid %s7BFBodID
			gosub s7WaitForAction 12
			event macro 17 0
			gosub s7WaitForVars contsize in 510_275_510_230_510_275_510_254_510_395_510_347_510_371_510_323_510_182_510_302_510_326_510_350 contname = generic_gump 4
			gosub getycontsize
			set %tx #contposx + 140
			set %ty #contposy + #result - 75
			if ! %freeshard
				set %ty %ty + 25
			click %tx %ty
			wait 10
			ignoreitem reset
			goto targeting
		&#125;
	&#125;
	else if #findcnt = 0
	&#123;
		wait 10
		gosub s7GetProperty %s7BFBodID A , #spc , Bulk , #spc , Order , #spc , Deed$
		gosub s7GetBodAmountMade
		if %s7BFBODAmountMade < %s7BFBODAmount
			set %s7BF_FBSuccess #false
	&#125;
	wait 10
	click %tx %ty f r dmc
return %s7BF_FBSuccess

;///////////////////////////////////;
; findTrashCan
; looks for the nearest circular filing cabinet
;///////////////////////////////////;
sub findTrashCan
	gosub s7FindNamedItem BKF_HIF_IKF G_2 trash
	if #result = #false
		return #false
	set %trashid #result
return #true

;///////////////////////////////////;
; openTrashCan
; opens the can and places it in a nice place for dropping items.
;///////////////////////////////////;
sub openTrashCan
	set #lobjectid %trashid
	gosub s7waitforaction 13
	event macro 17 0
	gosub s7waitforvars contid = %trashid 5
	if ! #result
		return #false
	wait 10
	contpos 250 500
	set %trashx 270
	set %trashy 530
	wait 10
return #true

;///////////////////////////////////;
; s7FindSBod
; finds a filled sbod in backpack by name, quantity, and quality
;///////////////////////////////////;
sub s7FindSBod
	set %FSBProp %2
	set %FSBcnt %1
	finditem EYM C_ , #backpackid
	set %FSBfindcnt #findcnt
	for %FSBfindI 1 %FSBfindcnt
	&#123;
		finditem EYM %FSBfindI C_ , #backpackid
		gosub s7GetProperty #findid A , #spc , Bulk , #spc , Order , #spc , Deed$
		if %FSBProp in #property && large , #spc , bulk notin #property && &#40; &#40; %s7BFLbodExceptional && exceptional in #property &#41; || &#40; ! %s7BFLbodExceptional && exceptional notin #property &#41; &#41;
		&#123;
			gosub s7GetBodAmountMade
			if %s7BFBodAmountMade = %FSBCnt && barbed notin %s7BFLBodProperty && horned notin %s7BFLBodProperty && spined notin %s7BFLBodProperty && shadow notin %s7BFLBodProperty && copper notin %s7BFLBodProperty && bronze notin %s7BFLBodProperty && gold notin %s7BFLBodProperty && agapite notin %s7BFLBodProperty && verite notin %s7BFLBodProperty && valorite notin %s7BFLBodProperty && barbed notin #property && horned notin #property && spined notin #property && shadow notin #property && copper notin #property && bronze notin #property && gold notin #property && agapite notin #property && verite notin #property && valorite notin #property
				return #true
			if %s7BFBodAmountMade = %FSBCnt && spined in %s7BFLBodProperty && spined in #property
				return #true
			if %s7BFBodAmountMade = %FSBCnt && horned in %s7BFLBodProperty && horned in #property
				return #true
			if %s7BFBodAmountMade = %FSBCnt && barbed in %s7BFLBodProperty && barbed in #property
				return #true
			if %s7BFBodAmountMade = %FSBCnt && dull , #spc , copper in %s7BFLBodProperty && dull , #spc , copper in #property
				return #true
			if %s7BFBodAmountMade = %FSBCnt && shadow , #spc , iron in %s7BFLBodProperty && shadow , #spc , iron in #property
				return #true
			if %s7BFBodAmountMade = %FSBCnt && copper in %s7BFLBodProperty && dull notin %s7BFLBodProperty && copper in #property && dull notin #property
				return #true
			if %s7BFBodAmountMade = %FSBCnt && bronze in %s7BFLBodProperty && bronze in #property
				return #true
			if %s7BFBodAmountMade = %FSBCnt && gold in %s7BFLBodProperty && gold in #property
				return #true
			if %s7BFBodAmountMade = %FSBCnt && agapite in %s7BFLBodProperty && agapite in #property
				return #true
			if %s7BFBodAmountMade = %FSBCnt && verite in %s7BFLBodProperty && verite in #property
				return #true
			if %s7BFBodAmountMade = %FSBCnt && valorite in %s7BFLBodProperty && valorite in #property
				return #true
		&#125;
	&#125;
return #false

;///////////////////////////////////;
; s7FillLBod
; opens large bod, clicks combine, searches for the correct sbods to combine
;///////////////////////////////////;
sub s7FillLBod
	set #lpc 60
	set #lobjectid %s7BFBodID
	gosub s7WaitForAction 12
	event macro 17 0
	gosub s7WaitForVars contsize in 510_275_510_230_510_275_510_254_510_395_510_347_510_371_510_323_510_182_510_302_510_326_510_350 contname = generic_gump 4
	gosub getycontsize
	set %tx #contposx + 140
	set %ty #contposy + #result - 75
	if ! %freeshard
		set %ty %ty + 25
	click %tx %ty
	wait 10
	for %sbodNum 1 %s7BFLBodPieces
	&#123;
		if %s7BFLbodExceptional
			menu set s7BFMenuStatus Looking for filled smallbod %s7BFLBodCnt , x %s7BFLBodPiece . %sbodNum ...
		if ! %s7BFLbodExceptional
			menu set s7BFMenuStatus Looking for filled smallbod %s7BFLBodCnt , n %s7BFLBodPiece . %sbodNum ...
		gosub s7FindSbod %s7BFLBodCnt %s7BFLBodPiece . %sbodNum
		if #result
		&#123;
			set #ltargetid #findid
			set #ltargetkind 1
			for %_ 1 1
			&#123;
				gosub s7WaitForVars targCurs = 1 2
				if #result
					event macro 22 0
				if ! #result
				&#123;
					set #lobjectid %s7BFBodID
					gosub s7WaitForAction 12
					event macro 17 0
					gosub s7WaitForVars contsize in 510_275_510_230_510_275_510_254_510_395_510_347_510_371_510_323_510_182_510_302_510_326_510_350 contname = generic_gump 4
					gosub getycontsize
					set %tx #contposx + 140
					set %ty #contposy + #result - 75
					if ! %freeshard
						set %ty %ty + 25
					click %tx %ty
					wait 10
					set %_ 0
				&#125;
			&#125;
		&#125;
	&#125;
	wait 10
	click %tx %ty f r dmc
	set #lpc 10
return

;===================================;
;= CRAFTING SUBS ===================;
;===================================;

;///////////////////////////////////;
; MakeItems
; loops through crafting the required amount of items for the current bod
;///////////////////////////////////;
sub MakeItems
	set %s7BFMaterialSelected #false
	gosub s7GetProperty %s7BFBodID A , #spc , Bulk , #spc , Order , #spc , Deed$
	gosub s7GetBodAmountMade
	set %s7BFBodAmountToMake %s7BFBodAmount - %s7BFBodAmountMade
	set %s7BFBodMadeCnt 0
	set %craftAttempts 0
	for %MIi 1 1
	&#123;
		finditem !cgiItemType C_ , #backpackid
		set %MIItemFindCnt #findcnt
		if #findkind <> -1
		&#123;
			for %MIItemFindI 1 %MIItemFindCnt
			&#123;
				finditem !cgiItemType C_ , #backpackid
				if #findkind <> -1
				&#123;
					set %MIItemFindID #findid
					set %MiItemFindKind #findkind
					set %s7BFBodMadeCnt %s7BFBodMadeCnt + 1
					set %MIItemIgnore #true
					if %s7BFBODMatFindCol <> N/A && #findcol <> %S7BFBODMATFINDCOL
					&#123;
						set %s7BFBodMadeCnt %s7BFBodMadeCnt - 1
						set %MIItemIgnore #false
						ignoreitem #findid MIWrongColoredItems
					&#125;
					if %s7BFBodExceptional && &#40; #findcol = %S7BFBODMATFINDCOL || %s7BFBODMatFindCol = N/A &#41;
					&#123;
						gosub s7GetProperty %MiItemFindID
						if exceptional notin #property
						&#123;
							set %s7BFBodMadeCnt %s7BFBodMadeCnt - 1
							if %s7BFBodType = tailor
							&#123;
								if bone in !CGICATEGORYNAME
								&#123;
									gosub findTrashCan
									if ! #result
									&#123;
										display ok no trashcan found!!! halt.ing.
										halt
									&#125;
									if %euoVer < 15000
									&#123;
										set %gumpcx #contposx + 10
										set %gumpcy #contposy + 10
										for %trashopen 1 1
										&#123;
											click %trashx %trashy
											wait 1
											if #contid <> %trashID || %trashID = N/A 2
												gosub openTrashcan
												set %trashopen 0
										&#125;
										gosub s7waitforaction 13
										gosub s7MoveToPos %MIItemFindID %trashx %trashy 3
										wait 10
										click %gumpcx %gumpcy
									&#125;
									else
									&#123;
										gosub findTrashCan
										gosub s7WaitForAction 13
										gosub s7MoveToCont %MIItemFindID %trashID
									&#125;
								&#125;
								if bone notin !CGICATEGORYNAME
								&#123;
									set #ltargetid %MiItemFindID
									set #ltargetkind 1
									finditem JAG_KAG C
									if #findkind = -1 2
										display ok No scissors found! Get some!
										halt
									set #lobjectid #findid
									gosub s7WaitForAction 12
									event macro 17 0
									target 2s
									event macro 22 0
								&#125;
							&#125;
							if %s7BFBodType = smith
							&#123;
								gosub s7MakeAnything Smith Smelt %MIItemfindid
								if ! #result
								&#123;
									ignoreitem reset MICraftedItems
									gosub MakeNewTool
									set %s7BFBodMadeCnt 0
								&#125;
							&#125;
							set %MIi 0
							set %MIItemIgnore #false
						&#125;
					&#125;
					if %MIItemIgnore
						ignoreitem %MIItemFindID MICraftedItems
				&#125;
			&#125;
		&#125;
		if %craftAttempts >= 2 && %s7BFBodMadeCnt = 0
		&#123;
			namespace push
			namespace local _s7MakeAnything
			set !2 N/A
			set !1 N/A
			namespace pop
			set %craftAttempts 0
			set %s7BFMaterialSelected #false
		&#125;
		if %MIi <> 0 && #weight > &#40; %maxweight - 5 - &#40; !cgiItemWeight * 2 &#41; &#41;
		&#123;
			ignoreitem reset MICraftedItems
			finditem !cgiItemType C_ , #backpackid
			if #findkind = -1 2
				display ok We have a major problem. You are getting close to being overweight, yet you havent crafted any items to fill the BODs with. Please make some room in your pack, and restart the script.
				halt
			gosub FillBod
			wait 3s
			gosub s7GetProperty %s7BFBodID A , #spc , Bulk , #spc , Order , #spc , Deed$
			gosub s7GetBodAmountMade
			set %s7BFBodAmountToMake %s7BFBodAmount - %s7BFBodAmountMade
			set %s7BFBodMadeCnt 0
			set %craftAttempts 0
			set %MIi 0
		&#125;
		set %menucnt %s7bfbodamountmade + %s7bfbodmadecnt
		if ! %s7BFCalled
			menu set s7BFMenuStatus Making item %menucnt of %s7bfbodamount for %s7BF_BodName BOD %bodi2 of %s7BF_Bods2FillCnt2
		if %s7BFCalled
			menu set s7BFMenuStatus Making item %menucnt of %s7bfbodamount for %s7BF_BodName BOD
		if %s7BFBodMadeCnt < %s7BFBodAmountToMake && %MIi <> 0
		&#123;
			if ! %s7BFMaterialSelected && !CGIMATERIALNAME1 <> Cloth
			&#123;
				gosub s7MakeAnything %s7BFBodType SelectMaterial %s7BFBodMaterial
				set %s7BFMaterialSelected #true
				if ! #result
				&#123;
					ignoreitem reset MICraftedItems
					gosub MakeNewTool
					set %s7BFBodMadeCnt 0
					set %s7BFMaterialSelected #false
				&#125;
			&#125;
			if !CGIMATERIALNAME1 = INGOTS || !CGIMATERIALNAME1 = CLOTH
				set %grabAmt &#40; %maxweight - #weight - 15 &#41; * 10
			if !CGIMATERIALNAME1 = LEATHER
				set %grabAmt &#40; %maxweight - #weight - 15 &#41;
			if %grabAmt > 250
				set %grabAmt 250
			if !cgiMaterialValue1 > %grabAmt
				set %grabAmt !cgiMaterialValue1
			if !CGIMATERIALNAME2 = BONES
			&#123;
				set %boneGrabAmt 50
				if %grabAmt - %boneGrabAmt < 0
					set %boneGrabAmt !cgiMaterialValue2
				if %grabAmt - %boneGrabAmt < 0 2
					display ok You have too much extra weight on you to be able to grab enough bones and leather to make one more item. Please lose some weight and restart the script.
					halt
				set %grabAmt %grabAmt - %boneGrabAmt
			&#125;
			gosub s7ResourceCheck %s7BFBodMatType %s7BFBodMatFindCol !cgiMaterialValue1 %grabAmt #true %s7BFSecureID
			if !CGIMATERIALNAME2 = BONES && #result
				gosub s7ResourceCheck GUF 0 !cgiMaterialValue2 %boneGrabAmt #true %s7BFSecureID
			set %result #result
			if ! %result
			&#123;
				ignoreitem reset MICraftedItems
				set %s7BFBodMadeCnt 0
				finditem !cgiItemType C_ , #backpackid
				if #findkind <> -1
				&#123;
					gosub FillBod
					wait 3s
					gosub s7GetProperty %s7BFBodID A , #spc , Bulk , #spc , Order , #spc , Deed$
					gosub s7GetBodAmountMade
					set %s7BFBodAmountToMake %s7BFBodAmount - %s7BFBodAmountMade
					set %craftAttempts 0
				&#125;
				display ok You seem to lack materials! Pausing!
				pause
			&#125;
			if %result
			&#123;
				gosub s7MakeAnything %s7BFBodType !CGICategory !CGISelection
				if #result
				&#123;
					namespace push
					namespace local _s7MakeAnything
					set %craftGumpx !CraftContPosX + 60
					set %craftGumpy !CraftContPosY + 60
					namespace pop
					set %craftAttempts %craftAttempts + 1
				&#125;
				if ! #result
				&#123;
					ignoreitem reset MICraftedItems
					gosub MakeNewTool
					set %s7BFBodMadeCnt 0
				&#125;
				if %s7BFBodMadeCnt >= &#40; %s7BFBodAmountToMake - 3 &#41;
				&#123;
					wait 3s
				&#125;
			&#125;
			set %MIi 0
		&#125;
		if &#40; %s7BFBodMadeCnt >= %s7BFBodAmountToMake && %MIi <> 0 &#41; || &#40; %s7BFBodAmountMade >= %s7BFBodAmount &#41;
		&#123;
			ignoreitem reset MIWrongColoredItems
			ignoreitem reset MICraftedItems
			gosub closeCraftGump
			return #true
		&#125;
		set %MIi 0
	&#125;

sub closeCraftGump
	set %_CGt #systime
	repeat
		wait 1
	until %_CGt + 500 < #systime || &#40; #contname = generic_gump && #contsize = !craftGumpContSize &#41;
	if #contname = generic_gump && #contsize = !craftGumpContSize
	&#123;
		namespace push
		namespace local _s7MakeAnything
		set %cx !CraftContPosX + 30
		set %cy !CraftContPosY + 415
		click %cx %cy dmc
		namespace pop
	&#125;
return

sub closeGump
	click %2 %3
	set %_CGt #systime
	for %_CG 1 1
	&#123;
		if %_CGt + 400 < #systime
			return
		if #contname <> %1
			set %_CG 0
	&#125;
	click %2 %3 r
return

;///////////////////////////////////;
; MakeNewTool
; makes a new tool. duh
;///////////////////////////////////;
sub MakeNewTool
	namespace push
	namespace local _s7BF_MakeNewTool
	if !_s7BF_MNT_Init = N/A
	&#123;
		set !_s7BF_MNT_Init #true
		call %pathlib , %craftinfo HAG
		set !tailorCat !cgiCategory
		set !tailorSel !cgiSelection + 1
		call %pathlib , %craftinfo tongs
		set !smithCat !cgiCategory
		set !smithSel !cgiSelection + 1
		call %pathlib , %craftinfo tinker's_tools
		set !tinkerCat !cgiCategory
		set !tinkerSel !cgiSelection + 1
	&#125;
	makeNewTool:
	set %MNTCat !tailorCat
	set %MNTSel !tailorSel
	set %MNTTool HAG
	ignoreitem reset
	if %s7BFBodType = Smith
	&#123;
		set %MNTCat !smithCat
		set %MNTSel !smithSel
		set %MNTTool OBG_TBG_TLH
	&#125;
	gosub s7ResourceCheck %MNTTool 0 1 1 #false %s7BFSecureID
	if ! #result
	&#123;
		gosub s7ResourceCheck ENK 0 10 10 #true %s7BFSecureID
		if ! #result 2
			display ok You ran out of materials while crafting a tool$because you ran out of tools. pausing.$&#40;upon your return please make sure you have 10 iron ingots in your pack.&#41;
			pause
		if #result
		&#123;
			finditem JTL_KTL_GTL C_ , #backpackid
			if #findcnt = 0 2
				display ok You ran out of tinker tools.. how are you going to craft tinker tools without more tinker tools?
				halt
			if #findcnt < 2
			&#123;
				if %MNTMatSel = N/A || %MNTMatSel = #false
				&#123;
					set %MNTMatSel #true
					gosub s7MakeAnything Tinker SelectMaterial 1
					if ! #result
						set %MNTMatSel #false
				&#125;
				gosub s7MakeAnything Tinker !tinkerCat !tinkerSel
				wait 10
				goto makeNewTool
			&#125;
			gosub s7MakeAnything Tinker %MNTCat %MNTSel
			if #result
			&#123;
				gosub s7WaitForVars 530_ in #contsize contname = generic_gump 2
				if #result
				&#123;
					set %cx #contposx + 10
					set %cy #contposy + 10
					click %cx %cy f r dmc
				&#125;
			&#125;
		&#125;
	&#125;
	namespace pop
return



; ===================================================================== ;
; ///////////////////////////////////////////////////////////////////// ;
; // EXCERPTS FROM S7SUBS.EUO ///////////////////////////////////////// ;
; ///////////////////////////////////////////////////////////////////// ;
; // Any reproduction of the subroutines below is strictly pro- /////// ;
; // hibited without express written permission of the author ///////// ;
; // &#40;snicker7&#41;. Violation of the above will result in malicious ////// ;
; // actions by the aforementioned author performed upon your person // ;
; // including but not limited to: bodily harm, slander, maternal ///// ;
; // insults, possible legal action, and callin' the five-oh. Thank /// ;
; // you. ///////////////////////////////////////////////////////////// ;
; ///////////////////////////////////////////////////////////////////// ;
; ===================================================================== ;

;----
;* @name s7MoveToPos
;* @author snicker7
;* @ver 1.2 24Aug05
;* @purpose Just Another Item Dragger.
;* @params 	%1 is the item to be dragged
;*		%2 is the x-coord to drop to
;* 		%3 is the y-coord to drop to
;*		%4 is the timeout in seconds
;* 		%5 is the amount to be dragged &#40;blank for all&#41;
;* @returns 	#true if drop was successful
;*		#false on error &#40;drop to backpack, insufficient params, failed to drag&#41;
;*		halt on critical error
;* @notes moves any item to a position on the screen. Will
;*	attempt to drop on character if drop fails. If character
;*	drop fails, halts and error message to avoid crash.
;* @dependencies
;*		s7WaitForAction
;* @example: call s7Subs.euo s7MoveToPos #findid 7 9 4 77
;* @status unknown
sub s7MoveToPos
	if %0 < 4
		return #false
	namespace Push
	namespace Local _s7MvToPos
	set !_ID %1
	set !_x %2
	set !_y %3
	set !_tO %4
	set !_Amt #spc
	if %0 > 4
		set !_Amt %5
	set !_retry 0
	_s7MvToPos_SD:
	finditem !_ID
	if #findkind = -1 2
		namespace pop
		return #false
	gosub s7WaitForAction 13
	event drag #findid
	if #findstack > 1
	&#123;
		set !_timeOut #scnt
		for !_ 1 1
		&#123;
			if #contname <> stack_gump && #contname <> drag_gump
			&#123;
				wait 1
				if !_timeOut + !_tO < #scnt
				&#123;
					set !_retry !_retry + 1
					if !_retry > 2 2
						namespace pop
						return #false
					goto _s7MvToPos_SD
				&#125;
				set !_ 0
			&#125;
		&#125;
		if !_Amt > #findstack
			set !_Amt #findstack
		msg !_Amt , $
	&#125;
	set !_retry 0
	set !_timeOut #scnt
	for !_ 1 1
	&#123;
		if #lliftedkind <> 1
		&#123;
			wait 1
			if !_timeOut + !_tO < #scnt
			&#123;
				set !_retry !_retry + 1
				if !_retry > 2 2
					namespace pop
					return #false
				goto _s7MvToPos_SD
			&#125;
			set !_ 0
		&#125;
	&#125;
	set !_retry 0
	click !_x !_y p
	set !_timeout #scnt
	for !_ 1 1
	&#123;
		if #lliftedkind = 1
		&#123;
			wait 1
			if !_timeout + !_t0 < #scnt
			&#123;
				set !_retry !_retry + 1
				if !_retry = 1
				&#123;
					set !_x #clixres / 2
					set !_y &#40; #cliyres / 2 &#41; - 30
					click !_x !_y p
					set #result #false
					set !_timeout #scnt
				&#125;
				if !_retry = 2 2
					display ok You have failed to drop an item to the correct position.$$The script is now halting to prevent a crash.
					halt
			&#125;
			set !_ 0
		&#125;
	&#125;
	set #result #true
	namespace pop
return #result

;----
;* @name s7MoveToCont
;* @author snicker7
;* @ver 1.2 24Aug05
;* @purpose A wrapper for the sub s7MoveToPos for moving to containers.
;* @params 	%1 is the item to be dragged
;*		%2 is the container to drag to
;*		%3 is the mother container in which %2 is contained
;* 		%4 is the #findmod value for the container
;* 		%5 is the amount to be dragged &#40;blank for all&#41;
;* @returns none
;* @notes this is mad basic. no error checking. That is up to you.
;* @dependencies	s7MoveToPos
;* @example: call s7Subs.euo s7MoveToCont #findid #backpackid #charid 140_220
;* @status tested good
sub s7MoveToCont
	namespace Push
	namespace Local _s7MoveToCont
	set !_ID %1
	set !_DCont %2
	set !_MCont %3
	set !_FMod %4
	if %euover >= 15000
	&#123;
		set !_Amt 65535
		if %0 > 4
			set !_Amt abs %5
		finditem !_ID
		if #findkind = -1 2
			namespace pop
			return #false
		gosub s7WaitForAction 13
		exevent drag #findid !_Amt
		exevent dropc !_DCont
		namespace pop
		return #true
	&#125;
	set !_Amt #spc
	if %0 > 4
		set !_Amt %5
	set #result #true
	set !_retry 0
	for !_ 1 1
	&#123;
		finditem !_DCont C_ , !_MCont
		if #findkind = -1
		&#123;
			set #lobjectid !_MCont
			gosub s7WaitForAction 13
			event macro 17 0
			gosub s7WaitForVars contid = !_MCont 3
			if ! #result
			&#123;
				set !_retry !_retry + 1
				if !_retry > 2 2
					namespace pop
					return #false
			&#125;
			set !_ 0
		&#125;
	&#125;
	set !_retry 0
	set #findmod !_Fmod
	for !_ 1 1
	&#123;
		gosub s7MoveToPos !_ID #findx #findy 4 !_Amt
		if ! #result
		&#123;
			set !_retry !_retry + 1
			if !_retry > 2 2
				namespace pop
				return #false
			set !_ 0
		&#125;
	&#125;
namespace Pop
return #true

;----
;* @name s7WaitForAction
;* @author snicker7
;* @ver 1.1 31Jan05
;* @purpose waits 1.3 seconds before continuing, useful for waiting to perform
;*    another action
;* @params 	none
;* @returns none
;* @notes probably not an original idea, but I need to use it frequently and it
;*    was easier to write it myself than to try to look for it as written by
;*    someone else
;* @example: call s7Subs.euo s7WaitForAction 13
;* @status tested good
sub s7WaitForAction
	_s7WaitForAction:
	if %_s7ActionTimer + %1 > #scnt2 2
		wait 1
		goto _s7WaitForAction
	set %_s7ActionTimer #scnt2
return

;----
;* @name s7WaitForVars
;* @author snicker7, inspired by Quintok, and of course, Smertrios
;* @ver 1.2 24Aug05
;* @purpose Multiple input sysvar waiter.
;* @params 	%1*n is the gump sysvar being checked
;*		%2*n is the comparative operator &#40;>, <, <>, =, etc&#41;
;*		%3*n is the desired value of the sysvar
;*		%nfinal is the timeout in seconds
;* @returns #false if it times out
;*          #true if success
;* @notes 	%1 does not require the preceding number sign
;*		one line shorter than Q's, no disrespect son
;*		originally written by Smertrios, included in Lexia
;*		Multiple inputs by Quintok, Obfuscation and name-
;*		spacing by snicker7!
;* @example: call s7Subs.euo s7WaitForVars contID = #backpackID contSize = 7_9 3
;* @status tested good
sub s7WaitForVars
	namespace Push
	namespace Local _s7WFVs
	set !C %0 / 3
	set !T #scnt + 5
	if &#40; %0 % 3 &#41; = 1
		set !T #scnt + % . %0
	for !i 1 !C
	&#123;
		set !o 3 * !i - 2
		set !p !o + 1
		set !q !o + 2
		if ! &#40; # . % . !o % . !p % . !q &#41;
			set !i 0
		if #scnt > !T 2
			namespace pop
			return #false
	&#125;
	namespace Pop
return #true

;----
;* @name s7MakeAnything
;* @author snicker7
;* @ver 1.5 09Oct09
;* @purpose Crafting sub capable of dealing with the
;*	standard crafting gump for all crafting skills.
;* @params 	%1	Crafting skill. Possible values are:
;*			Tailor, Smith, Carpentry, Cooking,
;*			Alchemy, Stonecrafting, Tinker,
;*			Inscription, or Cartography
;*		%2	Three possible options:
;*			SelectMaterial: Selects the material to
;*				craft with &#40;if avaliable&#41; by
;*				index which is defined by %3.
;*			Smelt/Cut: Only avaliable if %1 is
;*				'Tailor' or 'Smith', respectively.
;*				Will cut or smelt the item passed
;*				by ID as variable %3.
;*			For Crafting: This should be a number
;*				which corresponds to the category
;*				on the crafting gump beginning
;*				with the first category as 1.
;*		%3	The material index for SelectMaterial,
;*			the ID of the item to be smelted/cut for
;*			Smelt/Cut, or the selection number of the
;*			item you wish to make on the crafting menu.
;*		%4	&#40;optional&#41; ID of specific tool to use. If
;*			%4 is defined, the sub will use this tool
;*			only to craft with. Used for runic kits.
;*			The sub will return #false if the tool is
;*			not found. Slower, as the tool will be
;*			opened every call of the script, rather
;*			than just waiting for the gump to return,
;*			ensuring that the tool menu is the right
;*			tool.
;* @returns 	#true	The sub executed successfully.
;* 		#false	A tool was not found to perform the
;*			necessary operations. Useful, if the sub
;*			returns #false, simply call it again to
;*			make the correct tool.
;* @notes	This sub automatically determines when to "Make Last."
;*		If you call the sub twice in a row with the same
;*		options, the second time it will click make last
;*		instead of clicking through the whole menu.
;* @example:	call s7subs.euo s7MakeAnything Smith 7 10 ;Make a warfork
;*		call s7subs.euo s7MakeAnything Stonecrafting SelectMaterial 2 ;select dullcopper granite
;*		call s7subs.euo s7MakeAnything Tailor Cut DFKLSED ;cuts the item with ID DFKLSED
;*		call s7subs.euo s7MakeAnything Smith 7 10 EASUSPS ;makes a warfork using the tool with ID EASUSPS
;* @status almost done. still need to put in the cartotool type and find all types for all tools.
;----
sub s7MakeAnything
	if %0 < 3
		return #false
	namespace push
	namespace local _s7MakeAnything
	if !s7MA_Init = N/A
	&#123;
		set !s7MA_Init #true
		set !freeshard abs &#40; _ , #shard , _ notin origin_pacific_sonoma_baja_legends_atlantic_chesapeake_catskills_lake , #spc , austin_napa , #spc , valley_lake , #spc , superior_great , #spc , lakes_siege , #spc , perilous_europa_drachenfels_oceania_wakoku_formosa_arirang_balhae_asuka_yamato_mugen_hokuto_misuho_izumo_sakura_TC1_ &#41;
		if %freeshard <> N/A
			set !freeshard abs &#40; %freeshard &#41;
		set !nonSEFreeshard abs &#40; _ , #shard , _ in _Defiance , #spc , AOS_ABC , #spc , UO_ &#41;
		set !craftGumpContSize 530_437
		set !bodGumpContSize 615_454
		if !freeshard <> 1
		&#123;
			set !craftGumpContSize 530_497
			set !bodGumpContSize 620_459
		&#125;
	&#125;
	if %0 = 4 && !tool <> N/A
	&#123;
		finditem %4 C_ , #backpackid
		if #findkind = -1 2
			namespace pop
			return #false
		if &#40; #findtype notin !tool && #findid notin !tool &#41; 2
			namespace pop
			return #false
		set !tool %4
		set !FirstCall #true
	&#125;
	if !1 = %1 && !2 = %2 && !3 = %3 && %2 <> SelectMaterial && !2 notin Smelt_Cut
		set !MakeLast #true
	if !1 <> %1 || !2 <> %2 || !3 <> %3 || %2 = SelectMaterial || %2 in Smelt_Cut
	&#123;
		set !1 %1
		if !1 = Tailor
			set !tool HAG
		if !1 = Smith
			set !tool OBG_TBG_TLH_FBG
		if !1 = Carpentry
			set !tool EGG_IGG_KGG
		if !1 = Cooking
			set !tool BCG_DND_OGG
		if !1 = Alchemy
			set !tool RQF
		if !1 = Stonecrafting
			set !tool ZEH
		if !1 = Tinker
			set !tool JTL_KTL_GTL
		if !1 = Inscription
			set !tool PBG
		if !1 = Cartography
			set !tool PBG
		if %0 = 4
		&#123;
			finditem %4 C_ , #backpackid
			if #findkind = -1 2
				namespace pop
				return #false
			if #findtype notin !tool 2
				namespace pop
				return #false
			set !tool %4
		&#125;
		if %0 < 4
		&#123;
			finditem !tool C_ , #backpackid
			if #findkind = -1 2
				namespace Pop
				return #false
		&#125;
		set !FirstCall #true
		set !MakeLast #false
		if %2 in smelt_cut 3
			set !FirstCall #false
			set !destroyID %3
			set !destroy #true
		if !Destroy && !1 notin smith_tailor 2
			namespace Pop
			return #false
		if %2 notin smelt_cut 2
			set !3 %3
			set !2 %2
		if !2 = SelectMaterial
			set !2 15
	&#125;
	for !selection 2 3
	&#123;
		for !loop 1 1
		&#123;
			set #result #true
			if !1 = Tailor && !destroy
				set !loop 2
			if &#40; ! !FirstCall || &#40; !1 = Smith && !Destroy &#41; &#41; && !loop <> 2 2
				gosub s7WaitForVars contsize = !craftGumpContSize contname = generic_gump 2
				set !loop 1
			if &#40; ! #result || !FirstCall &#41; && !loop <> 2
			&#123;
				gosub s7WaitForVars contsize = !craftGumpContSize contname = generic_gump 1
				finditem !tool C_ , #backpackid
				if #findkind = -1 2
					namespace Pop
					return #false
				gosub s7WaitForAction 12
				set #lobjectid #findid
				event macro 17 0
				set !loop 0
				set !FirstCall #False
			&#125;
		&#125;
		set !CraftContPosX #contposx
		set !CraftContPosY #contposy
		if !MakeLast && ! !destroy
		&#123;
			set !_Cx #contposx + 280
			set !_Cy #contposy + 450 - !freeshard * 40
			click !_Cx !_Cy
			namespace Pop
			return #true
		&#125;
		if !selection = 2
		&#123;
			if !destroy && !1 = Tailor
			&#123;
				finditem JAG_KAG C
				if #findkind = -1 2
					namespace pop
					return #false
				set #lobjectid #findid
				set #ltargetid !destroyid
				set #ltargetkind 1
				gosub s7WaitForAction 12
				event macro 17 0
				target 2s
				event macro 22 0
				set !destroy #false
				namespace pop
				return #true
			&#125;
			wait 10
			set !_Cx #contposx + 20
			set !_Cy &#40; #contposy + 70 + &#40; !2 * 20 &#41; &#41;
			if !destroy && !1 = Smith
				set !_Cy &#40; #contposy + 70 + &#40; 14 * 20 &#41; &#41;
			click !_Cx !_Cy
			if !destroy && !1 = Smith
			&#123;
				target 2s
				set #ltargetid !destroyid
				set #ltargetkind 1
				event macro 22 0
				set !destroy #false
				gosub s7WaitForVars contsize = !craftGumpContSize contname = generic_gump 2
				namespace pop
				return #true
			&#125;
		&#125;
		if !selection = 3
		&#123;
			set !3t !3
			for !loop 0 1
			&#123;
				if !3t > 10
				&#123;
					;set !_Cx #contposx + 380
					;set !_Cy #contposy + 270
					set !_Cx #contposx + 382
					set !_Cy #contposy + 292
					click !_Cx !_Cy
					set !3t !3t - 10
					set !loop 0
				&#125;
				if !3t <= 10
				&#123;
					set !_Cx #contposx + 230
					set !_Cy &#40; #contposy + 50 + &#40; !3t * 20 &#41; &#41;
					click !_Cx !_Cy
					gosub s7WaitForVars contsize = !craftGumpContSize contname = generic_gump 2
					namespace Pop
					return #true
				&#125;
			&#125;
		&#125;
	&#125;

;----
;* @name s7GetTarget
;* @author snicker7
;* @ver 1.0 27Dec04
;* @purpose Returns a target using #targcurs, objects only.
;* @params 	none
;* @returns Item id of the targeted item.
;* @notes none
;* @example: gosub getTarget
;* @status tested good
sub s7GetTarget
	set #targcurs 1
	_waitfortargcurs:
	if #targcurs = 1 2
		wait 1
		goto _waitfortargcurs
return #ltargetid

;----
;* @name s7FindNamedItem
;* @author snicker7
;* @ver 1.1 06Aug05
;* @purpose	find an item based on its name
;* @params 	%1	type of item to search for
;*		%2	"location" to search &#40;typical finditem values: G_3; C_ , #backpackid; etc&#41;
;*		%3-%n	properties to match
;* @dependencies
;* @returns 	#false	no such item was found
;*		<ItmID>	the ID of the item found
;* @notes 	Written for bodcollectorer.
;* @example: 	gosub s7FindNamedItem HS_IS G_10 tailor weaver ;finds all BOD giving tailors within 10 tiles
;* @status done
sub s7FindNamedItem
	namespace push
	namespace local _s7_FNI
	set !zero %0
	set !type %1
	set !location %2
	finditem !type !location
	if #findkind = -1
	&#123;
		namespace pop
		return #false
	&#125;
	set !findcnt #findcnt
	for !findI 1 !findcnt
	&#123;
		finditem !type !findI !location
		gosub s7GetProperty #findid
		for !nameI 3 !zero
		&#123;
			if % . !nameI in #property
			&#123;
				namespace pop
				return #findid
			&#125;
		&#125;
	&#125;
return #false

;----
;* @name s7GetProperty
;* @author snicker7
;* @ver 2.1 20080309
;* @purpose	 failsafe method for obtaining property values.
;* @params 	 %1	ID of item to get property of.
;* @dependencies N/A
;* @returns 	 N/A
;* @notes 	 N/A
;* @example: gosub s7GetProperty #findid
;* @status done
sub s7GetProperty
	set !_7gpt #systime
	event property %1
	for !_7gp 1 1
	&#123;
		if !_7gpt + 1500 < #systime
			return #false
		if #property = $ || no , #spc , significant in #property || no , #spc , data in #property || &#40; %0 > 1 && %0 = 2 && #property = %2 &#41;
			set !_7gp 0
		if no , #spc , data in #property || &#40; %0 > 1 && %0 = 2 && #property = %2 &#41;
			event property %1
	&#125;
return #true

;===========
;**
;* @name s7ResourceCheck
;* @ver 1.1 05May05
;* @author  snicker7
;* @purpose Checks to see if a certain amount of resources are in the backpack, if not, restocks from a set container
;* @params  %1	Type of resource to check
;*		%2	FindCol of resource, N/A if irrelevant
;*		%3	Minimum amount of resource to have
;*		%4	How many to restock if not enough found
;*		%5	True/False: is the resource stackable
;*		%6	Container ID to restock from
;* @returns #true		Restock was successful
;*		#false	Resources not found in backpack or secure
;* @dependencies	s7MoveToCont
;* @example call s7subs.euo s7ResourceCheck WZF N/A 6 100 #true %secure
;* @status testing
sub s7ResourceCheck
	namespace push
	namespace local _s7ResCzech
	set !ResType %1
	set !ResCol %2
	set !ResCount %3
	set !RestockCnt %4
	set !StkCnt cnt
	if %5
		set !StkCnt stack
	set !RestockCont %6
	for !ResI 0 1
	&#123;
		finditem !resType C_ , #backpackid
		set !BPItemCount 0
		if #findkind <> -1
		&#123;
			set !FindCnt #findCnt
			for !CountItem 1 !FindCnt
			&#123;
				finditem !resType !CountItem C_ , #backpackid
				if &#40; !ResCol <> N/A && #findcol = !ResCol &#41; || !ResCol = N/A
					set !BPItemCount !BPItemCount + #find . !stkCnt
			&#125;
		&#125;
		if !BPItemCount >= !ResCount && !ResI <> 0
		&#123;
			namespace pop
			return #true
		&#125;
		if !BPItemCount < !resCount && !ResI <> 0
		&#123;
			finditem !resType C_ , !restockCont
			set !SecureItemCount 0
			if #findkind <> -1
			&#123;
				set !FindCnt #findCnt
				for !CountItem 1 !FindCnt
				&#123;
					finditem !resType !CountItem C_ , !restockCont
					if &#40; !ResCol <> N/A && #findcol = !ResCol &#41; || !ResCol = N/A 2
						set !SecureItemCount !SecureItemCount + #find . !stkCnt
						set !RestockID #findid
				&#125;
			&#125;
			if &#40; !SecureItemCount + !BPItemCount &#41; < !resCount
			&#123;
				namespace pop
				return #false
			&#125;
			set !RestockAmt !restockCnt - !BPItemCount
			gosub s7MoveToCont !RestockID #backpackid #charid 140_220 !restockAmt
			wait 20
			set !ResI 0
		&#125;
	&#125;

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Не в сети
  • darkshadows
  • Premium Member
  • Сообщений: 100
  • Thanks: 0
Не в сети

Re: RE: Скрипт на ковку/шитье бодов

#9419
;================================== 
; Script Name: craftinfo.txt
; Author: Kal In Ex
; Version: 2.00-EA
; Client Tested with:
; EUO version tested with: 
; Shard OSI / FS: OSI
; Revision Date: October 09, 2009
; Public Release: April 21, 2005
; Global Variables Used: 
; Purpose: info useful for crafting. Version sanctioned by snicker7
; for use with s7BODFiller on EA Shards. Thanks to sciondal for
; updating this to the new SA crafting menu locations.
; Copyright 2005 Kal In Ex
;==================================
; tailoring, blacksmithy, tinkering

set !cgiItemName n/a
set !cgiItemType n/a
set !cgiItemWeight n/a
set !cgiItemDisposal n/a
set !cgiCategoryName n/a
set !cgiCategory n/a
set !cgiSelection n/a
set !cgiSkillCount n/a
set !cgiSkillName1 n/a
set !cgiSkillValue1 n/a
set !cgiMaterialCount n/a
set !cgiMaterialName1 n/a
set !cgiMaterialValue1 n/a

if %1 = cut-up_cloth || %1 = cut-up , #spc , cloth || %1 = cui
	gosub _sub cut-up_cloth bui 1 trash materials 1 0 1 tailoring 0 1 cloth 0
if %1 = combine_cloth || %1 = combine , #spc , cloth || %1 = bui
	gosub _sub combine_cloth bui 1 trash materials 1 1 1 tailoring 0 1 cloth 0
if %1 = skullcap || %1 = czh
	gosub _sub skullcap czh 1 scissors hats 1 0 1 tailoring 0 1 cloth 2
if %1 = bandana || %1 = gzh
	gosub _sub bandana gzh 1 scissors hats 1 1 1 tailoring 0 1 cloth 2
if %1 = floppy_hat || %1 = floppy , #spc , hat || %1 = bwi
	gosub _sub floppy_hat bwi 1 trash hats 1 2 1 tailoring 62 1 cloth 11
if %1 = cap || %1 = vvi
	gosub _sub cap vvi 1 trash hats 1 3 1 tailoring 62 1 cloth 11
if %1 = wide-brim_hat || %1 = wide-brim , #spc , hat || %1 = wvi
	gosub _sub wide-brim_hat wvi 1 trash hats 1 4 1 tailoring 62 1 cloth 12
if %1 = straw_hat || %1 = straw , #spc , hat || %1 = xvi
	gosub _sub straw_hat xvi 1 trash hats 1 5 1 tailoring 62 1 cloth 10
if %1 = tall_straw_hat || %1 = tall , #spc , straw , #spc , hat
	gosub _sub tall_straw_hat yvi 1 trash hats 1 6 1 tailoring 67 1 cloth 13
if %1 = wizard's_hat || %1 = wizard's , #spc , hat || %1 = iwi
	gosub _sub wizard's_hat iwi 1 trash hats 1 7 1 tailoring 72 1 cloth 15
if %1 = bonnet || %1 = hwi
	gosub _sub bonnet hwi 1 trash hats 1 8 1 tailoring 62 1 cloth 11
if %1 = feathered_hat || %1 = feathered , #spc , hat || %1 = kwi
	gosub _sub feathered_hat kwi 1 trash hats 1 9 1 tailoring 62 1 cloth 12
if %1 = tricorne_hat || %1 = tricorne , #spc , hat || %1 = jwi
	gosub _sub tricorne_hat jwi 1 trash hats 1 10 1 tailoring 62 1 cloth 12
if %1 = jester_hat || %1 = jester , #spc , hat || %1 = ewi
	gosub _sub jester_hat ewi 1 trash hats 1 11 1 tailoring 72 1 cloth 15
if %1 = flower_garland || %1 = flower , #spc , garland || %1 = jjn
	gosub _sub flower_garland jjn 1 scissors hats 1 12 1 tailoring 100 1 cloth 5
if %1 = cloth_ninja_hood || %1 = cloth , #spc , ninja , #spc , hood
	gosub _sub cloth_ninja_hood bcp 2 scissors hats 1 13 1 tailoring 800 1 cloth 13
if %1 = kasa || %1 = ucp
	gosub _sub kasa ucp 3 scissors hats 1 14 1 tailoring 600 1 cloth 12
if %1 = doublet || %1 = xvl
	gosub _sub doublet xvl 2 scissors shirts 2 0 1 tailoring 0 1 cloth 8
if %1 = shirt || %1 = fci
	gosub _sub shirt fci 1 scissors shirts 2 1 1 tailoring 207 1 cloth 8
if %1 = fancy_shirt || %1 = fancy , #spc , shirt || %1 = tql
	gosub _sub fancy_shirt tql 2 scissors shirts 2 2 1 tailoring 248 1 cloth 8
if %1 = tunic || %1 = hcm
	gosub _sub tunic hcm 5 scissors shirts 2 3 1 tailoring 0 1 cloth 12
if %1 = surcoat || %1 = pam
	gosub _sub surcoat pam 6 scissors shirts 2 4 1 tailoring 82 1 cloth 14
if %1 = plain_dress || %1 = plain , #spc , dress || %1 = dwl
	gosub _sub plain_dress dwl 2 scissors shirts 2 5 1 tailoring 124 1 cloth 10
if %1 = fancy_dress || %1 = fancy , #spc , dress || %1 = vql_EWL
	gosub _sub fancy_dress vql_EWL 3 scissors shirts 2 6 1 tailoring 331 1 cloth 12
if %1 = cloak || %1 = dci
	gosub _sub cloak dci 5 scissors shirts 2 7 1 tailoring 414 1 cloth 14
if %1 = robe || %1 = fwl
	gosub _sub robe fwl 3 scissors shirts 2 8 1 tailoring 539 1 cloth 16
if %1 = jester_suit || %1 = jester , #spc , suit || %1 = xbm
	gosub _sub jester_suit xbm 4 scissors shirts 2 9 1 tailoring 82 1 cloth 24
if %1 = fur_cape || %1 = fur , #spc , cape || %1 = vjn
	gosub _sub fur_cape vjn 4 scissors shirts 2 10 1 tailoring 350 1 cloth 13
if %1 = gilded_dress || %1 = gilded , #spc , dress || %1 = rjn
	gosub _sub gilded_dress rjn 3 scissors shirts 2 11 1 tailoring 375 1 cloth 16
if %1 = formal_shirt || %1 = formal , #spc , shirt || %1 = tjn
	gosub _sub formal_shirt tjn 1 scissors shirts 2 12 1 tailoring 260 1 cloth 16
if %1 = cloth_ninja_jacket || %1 = cloth , #spc , ninja , #spc , jacket
	gosub _sub cloth_ninja_jacket icp 5 scissors shirts 2 13 1 tailoring 750 1 cloth 12
if %1 = kamishimo || %1 = tcp
	gosub _sub kamishimo tcp 3 scissors shirts 2 14 1 tailoring 750 1 cloth 15
if %1 = hakama-shita || %1 = qcp
	gosub _sub hakama-shita qcp 3 scissors shirts 2 15 1 tailoring 400 1 cloth 14
if %1 = male_kimono || %1 = male , #spc , kimono || %1 = ybp
	gosub _sub male_kimono ybp 4 scissors shirts 2 16 1 tailoring 500 1 cloth 16
if %1 = female_kimono || %1 = female , #spc , kimono || %1 = xbp
	gosub _sub female_kimono xbp 4 scissors shirts 2 17 1 tailoring 500 1 cloth 16
if %1 = jin-baori || %1 = bdp
	gosub _sub jin-baori bdp 3 scissors shirts 2 18 1 tailoring 300 1 cloth 10
if %1 = short_pants || %1 = short , #spc , pants || %1 = edi
	gosub _sub short_pants edi 2 scissors pants 3 0 1 tailoring 248 1 cloth 6
if %1 = long_pants || %1 = long , #spc , pants || %1 = vdi
	gosub _sub long_pants vdi 2 scissors pants 3 1 1 tailoring 248 1 cloth 8
if %1 = kilt || %1 = ldi
	gosub _sub kilt ldi 2 scissors pants 3 2 1 tailoring 207 1 cloth 8
if %1 = skirt || %1 = gci
	gosub _sub skirt gci 4 scissors pants 3 3 1 tailoring 290 1 cloth 10
if %1 = fur_sarong || %1 = fur , #spc , sarong || %1 = xjn
	gosub _sub fur_sarong xjn 3 scissors pants 3 4 1 tailoring 350 1 cloth 12
if %1 = hakama || %1 = wcp
	gosub _sub hakama wcp 2 scissors pants 3 5 1 tailoring 500 1 cloth 16
if %1 = tattsuke-hakama || %1 = vcp
	gosub _sub tattsuke-hakama vcp 2 scissors pants 3 6 1 tailoring 500 1 cloth 16
if %1 = body_sash || %1 = body , #spc , sash || %1 = fzh
	gosub _sub body_sash fzh 1 scissors miscellaneous 4 0 1 tailoring 41 1 cloth 4
if %1 = half_apron || %1 = half , #spc , apron || %1 = xdi
	gosub _sub half_apron xdi 2 scissors miscellaneous 4 1 1 tailoring 207 1 cloth 6
if %1 = full_apron || %1 = full , #spc , apron || %1 = rdi
	gosub _sub full_apron rdi 4 scissors miscellaneous 4 2 1 tailoring 290 1 cloth 10
if %1 = obi || %1 = cdp
	gosub _sub obi cdp 1 scissors miscellaneous 4 3 1 tailoring 200 1 cloth 6
if %1 = oil_cloth || %1 = oil , #spc , cloth || %1 = rti
	gosub _sub oil_cloth rti 1 trash miscellaneous 4 10 1 tailoring 746 1 cloth 1
if %1 = goza_&#40;east&#41; || %1 = goza , #spc , &#40;east&#41; || %1 = ewh
	gosub _sub goza_&#40;east&#41; ewh 1 trash miscellaneous 4 11 1 tailoring 550 1 cloth 25
if %1 = goza_&#40;south&#41; || %1 = goza , #spc , &#40;south&#41; || %1 = ewh
	gosub _sub goza_&#40;south&#41; ewh 1 trash miscellaneous 4 12 1 tailoring 550 1 cloth 25
if %1 = square_goza_&#40;east&#41; || %1 = square , #spc , goza , #spc , &#40;east&#41;
	gosub _sub square_goza_&#40;east&#41; ewh 1 trash miscellaneous 4 13 1 tailoring 550 1 cloth 25
if %1 = square_goza_&#40;south&#41; || %1 = square , #spc , goza , #spc , &#40;south&#41;
	gosub _sub square_goza_&#40;south&#41; ewh 1 trash miscellaneous 4 14 1 tailoring 550 1 cloth 25
if %1 = brocade_goza_&#40;east&#41; || %1 = brocade , #spc , goza , #spc , &#40;east&#41;
	gosub _sub brocade_goza_&#40;east&#41; ewh 1 trash miscellaneous 4 15 1 tailoring 550 1 cloth 25
if %1 = brocade_goza_&#40;south&#41; || %1 = brocade , #spc , goza , #spc , &#40;south&#41;
	gosub _sub brocade_goza_&#40;south&#41; ewh 1 trash miscellaneous 4 16 1 tailoring 550 1 cloth 25
if %1 = square_brocade_goza_&#40;east&#41; || %1 = square , #spc , brocade , #spc , goza
	gosub _sub square_brocade_goza_&#40;east&#41; ewh 1 trash miscellaneous 4 17 1 tailoring 550 1 cloth 25
if %1 = square_brocade_goza_&#40;south&#41; || %1 = square , #spc , brocade , #spc , goza
	gosub _sub square_brocade_goza_&#40;south&#41; ewh 1 trash miscellaneous 4 18 1 tailoring 550 1 cloth 25
if %1 = fur_boots || %1 = fur , #spc , boots || %1 = ljn
	gosub _sub fur_boots ljn 3 scissors footwear 5 1 1 tailoring 500 1 cloth 12
if %1 = ninja_tabi || %1 = ninja , #spc , tabi || %1 = jcp
	gosub _sub ninja_tabi jcp 2 scissors footwear 5 2 1 tailoring 700 1 cloth 10
if %1 = waraji_and_tabi || %1 = waraji , #spc , and , #spc , tabi
	gosub _sub waraji_and_tabi kcp 2 scissors footwear 5 3 1 tailoring 200 1 cloth 6
if %1 = sandals || %1 = nvi
	gosub _sub sandals nvi 1 trash footwear 5 4 1 tailoring 124 1 leather 4
if %1 = shoes || %1 in pvi_awi
	gosub _sub shoes pvi_awi 2 trash footwear 5 5 1 tailoring 165 1 leather 6
if %1 = boots || %1 = tvi
	gosub _sub boots tvi 3 trash footwear 5 6 1 tailoring 331 1 leather 8
if %1 = thigh_boots || %1 = thigh , #spc , boots || %1 in cwi_ZVI
	gosub _sub thigh_boots cwi_ZVI 4 trash footwear 5 7 1 tailoring 414 1 leather 10
if %1 = leather_gorget || %1 = leather , #spc , gorget || %1 = jkh
	gosub _sub leather_gorget jkh 1 scissors lether_armor 6 3 1 tailoring 539 1 leather 4
if %1 = leather_cap || %1 = leather , #spc , cap || %1 = njl
	gosub _sub leather_cap njl 2 scissors lether_armor 6 4 1 tailoring 62 1 leather 2
if %1 = leather_gloves || %1 = leather , #spc , gloves || %1 = kkh
	gosub _sub leather_gloves kkh 1 scissors lether_armor 6 5 1 tailoring 518 1 leather 3
if %1 = leather_sleeves || %1 = leather , #spc , sleeves || %1 = hkh
	gosub _sub leather_sleeves hkh_PKH 2 scissors lether_armor 6 6 1 tailoring 539 1 leather 8
if %1 = leather_leggings || %1 = leather , #spc , leggings || %1 = vkh
	gosub _sub leather_leggings vkh 4 scissors lether_armor 6 7 1 tailoring 663 1 leather 10
if %1 = leather_tunic || %1 = leather , #spc , tunic || %1 = qkh
	gosub _sub leather_tunic qkh 6 scissors lether_armor 6 8 1 tailoring 705 1 leather 12
if %1 = leather_jingasa || %1 = leather , #spc , jingasa || %1 = gwo
	gosub _sub leather_jingasa gwo 3 scissors lether_armor 6 9 1 tailoring 450 1 leather 4
if %1 = leather_mempo || %1 = leather , #spc , mempo || %1 = swo
	gosub _sub leather_mempo swo 2 scissors lether_armor 6 10 1 tailoring 800 1 leather 8
if %1 = leather_do || %1 = leather , #spc , do || %1 = rwo
	gosub _sub leather_do rwo 6 scissors lether_armor 6 11 1 tailoring 750 1 leather 12
if %1 = leather_hiro_sode || %1 = leather , #spc , hiro , #spc , sode
	gosub _sub leather_hiro_sode owo 1 scissors lether_armor 6 12 1 tailoring 550 1 leather 5
if %1 = leather_suneate || %1 = leather , #spc , suneate || %1 = ubp
	gosub _sub leather_suneate ubp 4 scissors lether_armor 6 13 1 tailoring 680 1 leather 12
if %1 = leather_haidate || %1 = leather , #spc , haidate || %1 = gcp
	gosub _sub leather_haidate gcp 4 scissors lether_armor 6 14 1 tailoring 680 1 leather 12
if %1 = leather_ninja_pants || %1 = leather , #spc , ninja , #spc , pants
	gosub _sub leather_ninja_pants lcp 3 scissors lether_armor 6 15 1 tailoring 800 1 leather 13
if %1 = leather_ninja_jacket || %1 = leather , #spc , ninja , #spc , jacket
	gosub _sub leather_ninja_jacket ncp 5 scissors lether_armor 6 16 1 tailoring 850 1 leather 13
if %1 = leather_ninja_belt || %1 = leather , #spc , ninja , #spc , belt
	gosub _sub leather_ninja_belt mcp 1 scissors lether_armor 6 17 1 tailoring 500 1 leather 5
if %1 = leather_ninja_mitts || %1 = leather , #spc , ninja , #spc , mitts
	gosub _sub leather_ninja_mitts ocp 2 scissors lether_armor 6 18 1 tailoring 650 1 leather 12
if %1 = leather_ninja_hood || %1 = leather , #spc , ninja , #spc , hood
	gosub _sub leather_ninja_hood ccp 2 scissors lether_armor 6 19 1 tailoring 900 1 leather 14
if %1 = studded_gorget || %1 = studded , #spc , gorget || %1 = alh
	gosub _sub studded_gorget alh 1 scissors studded_armor 8 0 1 tailoring 788 1 leather 6
if %1 = studded_gloves || %1 = studded , #spc , gloves || %1 = xkh
	gosub _sub studded_gloves xkh 1 scissors studded_armor 8 1 1 tailoring 829 1 leather 8
if %1 = studded_sleeves || %1 = studded , #spc , sleeves || %1 = ykh_GLH
	gosub _sub studded_sleeves ykh_GLH 4 scissors studded_armor 8 2 1 tailoring 871 1 leather 10
if %1 = studded_leggings || %1 = studded , #spc , leggings || %1 = mlh
	gosub _sub studded_leggings mlh 5 scissors studded_armor 8 3 1 tailoring 912 1 leather 12
if %1 = studded_tunic || %1 = studded , #spc , tunic || %1 = llh
	gosub _sub studded_tunic llh 8 scissors studded_armor 8 4 1 tailoring 940 1 leather 14
if %1 = studded_mempo || %1 = studded , #spc , mempo || %1 = pcp
	gosub _sub studded_mempo pcp 2 scissors studded_armor 8 5 1 tailoring 800 1 leather 8
if %1 = studded_do || %1 = studded , #spc , do || %1 = mwo
	gosub _sub studded_do mwo 8 scissors studded_armor 8 6 1 tailoring 950 1 leather 14
if %1 = studded_hiro_sode || %1 = studded , #spc , hiro , #spc , sode
	gosub _sub studded_hiro_sode nwo 1 scissors studded_armor 8 7 1 tailoring 850 1 leather 8
if %1 = studded_suneate || %1 = studded , #spc , suneate || %1 = tbp
	gosub _sub studded_suneate tbp 5 scissors studded_armor 8 8 1 tailoring 920 1 leather 14
if %1 = studded_haidate || %1 = studded , #spc , haidate || %1 = fcp
	gosub _sub studded_haidate fcp 5 scissors studded_armor 8 9 1 tailoring 920 1 leather 14
if %1 = leather_shorts || %1 = leather , #spc , shorts || %1 = qsk
	gosub _sub leather_shorts qsk 3 scissors female_armor 9 0 1 tailoring 622 1 leather 8
if %1 = leather_skirt || %1 = leather , #spc , skirt || %1 = ysk
	gosub _sub leather_skirt ysk 1 scissors female_armor 9 1 1 tailoring 580 1 leather 6
if %1 = leather_bustier || %1 = leather , #spc , bustier || %1 = atk
	gosub _sub leather_bustier atk 1 scissors female_armor 9 2 1 tailoring 580 1 leather 6
if %1 = studded_bustier || %1 = studded , #spc , bustier || %1 = usk
	gosub _sub studded_bustier usk 1 scissors female_armor 9 3 1 tailoring 829 1 leather 8
if %1 = female_leather_armor || %1 = female , #spc , leather , #spc , armor
	gosub _sub female_leather_armor osk 1 scissors female_armor 9 4 1 tailoring 622 1 leather 8
if %1 = studded_armor || %1 = studded , #spc , armor || %1 = ssk
	gosub _sub studded_armor ssk 6 scissors female_armor 9 5 1 tailoring 871 1 leather 10
if %1 = bone_helmet || %1 = bone , #spc , helmet || %1 in yph_zph
	gosub _sub bone_helmet yph_zph 3 trash bone_armor 10 0 1 tailoring 850 2 leather 4 bones 2
if %1 = bone_gloves || %1 = bone , #spc , gloves || %1 in vph_AQH
	gosub _sub bone_gloves vph_aqh 2 trash bone_armor 10 1 1 tailoring 890 2 leather 6 bones 2
if %1 = bone_arms || %1 = bone , #spc , arms || %1 in bqh_qph
	gosub _sub bone_arms bqh_qph 2 trash bone_armor 10 2 1 tailoring 920 2 leather 8 bones 4
if %1 = bone_leggings || %1 = bone , #spc , leggings || %1 = cqh
	gosub _sub bone_leggings cqh 3 trash bone_armor 10 3 1 tailoring 950 2 leather 10 bones 6
if %1 = bone_armor || %1 = bone , #spc , armor || %1 = pph
	gosub _sub bone_armor pph 6 trash bone_armor 10 4 1 tailoring 960 2 leather 12 bones 10
if %1 = ringmail_gloves || %1 = ringmail , #spc , gloves || %1 = bmh
	gosub _sub ringmail_gloves bmh 2 smelt ringmail 1 0 1 blacksmithy 120 1 ingots 10
if %1 = ringmail_leggings || %1 = ringmail , #spc , leggings || %1 = imh
	gosub _sub ringmail_leggings imh 15 smelt ringmail 1 1 1 blacksmithy 194 1 ingots 16
if %1 = ringmail_sleeves || %1 = ringmail , #spc , sleeves || %1 = xlh
	gosub _sub ringmail_sleeves xlh_ylh 15 smelt ringmail 1 2 1 blacksmithy 169 1 ingots 14
if %1 = ringmail_tunic || %1 = ringmail , #spc , tunic || %1 = wlh
	gosub _sub ringmail_tunic wlh 15 smelt ringmail 1 3 1 blacksmithy 219 1 ingots 18
if %1 = chainmail_coif || %1 = chainmail__coif || %1 = chainmail , #spc , #spc , coif || %1 = chainmail , #spc , coif || %1 = dph
	gosub _sub chainmail_coif dph 7 smelt chainmail 1 4 1 blacksmithy 145 1 ingots 10
if %1 = chainmail_leggings || %1 = chainmail , #spc , leggings || %1 = aph
	gosub _sub chainmail_leggings aph 7 smelt chainmail 1 5 1 blacksmithy 367 1 ingots 18
if %1 = chainmail_tunic || %1 = chainmail , #spc , tunic || %1 = zoh
	gosub _sub chainmail_tunic zoh 7 smelt chainmail 1 6 1 blacksmithy 391 1 ingots 20
if %1 = platemail_arms || %1 = platemail , #spc , arms || %1 = msh
	gosub _sub platemail_arms msh 5 smelt platemail 1 7 1 blacksmithy 663 1 ingots 18
if %1 = platemail_gloves || %1 = platemail , #spc , gloves || %1 = ish
	gosub _sub platemail_gloves ish 2 smelt platemail 1 8 1 blacksmithy 589 1 ingots 12
if %1 = platemail_gorget || %1 = platemail , #spc , gorget || %1 = nsh
	gosub _sub platemail_gorget nsh 2 smelt platemail 1 9 1 blacksmithy 564 1 ingots 10
if %1 = platemail_legs || %1 = platemail , #spc , legs || %1 = lsh
	gosub _sub platemail_legs lsh 7 smelt platemail 1 10 1 blacksmithy 688 1 ingots 20
if %1 = platemail_&#40;tunic&#41; || %1 = platemail , #spc , &#40;tunic&#41; || %1 = platemail_tunic || %1 = platemail , #spc , tunic || %1 = hsh
	gosub _sub platemail_&#40;tunic&#41; hsh 10 smelt platemail 1 11 1 blacksmithy 750 1 ingots 25
if %1 = platemail_&#40;female&#41; || %1 = platemail , #spc , &#40;female&#41; || %1 = female_plate || %1 = female , #spc , plate || %1 = msk
	gosub _sub platemail_&#40;female&#41; msk 4 smelt platemail 1 12 1 blacksmithy 441 1 ingots 20
if %1 = dragon_barding_deed || %1 = dragon , #spc , barding , #spc , deed
	gosub _sub dragon_barding_deed ewh 1 smelt platemail 1 13 1 blacksmithy 725 1 ingots 750
if %1 = platemail_mempo || %1 = platemail , #spc , mempo || %1 = pwo
	gosub _sub platemail_mempo pwo 3 smelt platemail 1 14 1 blacksmithy 800 1 ingots 18
if %1 = platemail_do || %1 = platemail , #spc , do || %1 = lwo
	gosub _sub platemail_do lwo 10 smelt platemail 1 15 1 blacksmithy 870 1 ingots 28
if %1 = platemail_hiro_sode || %1 = platemail , #spc , hiro , #spc , sode
	gosub _sub platemail_hiro_sode wbp 2 smelt platemail 1 16 1 blacksmithy 800 1 ingots 16
if %1 = platemail_suneate || %1 = platemail , #spc , suneate || %1 = ecp
	gosub _sub platemail_suneate ecp 7 smelt platemail 1 17 1 blacksmithy 650 1 ingots 20
if %1 = platemail_haidate || %1 = platemail , #spc , haidate || %1 = zbp
	gosub _sub platemail_haidate zbp 7 smelt platemail 1 18 1 blacksmithy 650 1 ingots 20
if %1 = bascinet || %1 = ash
	gosub _sub bascinet ash 5 smelt helmets 2 0 1 blacksmithy 83 1 ingots 15
if %1 = close_helmet || %1 = close , #spc , helmet || %1 = esh
	gosub _sub close_helmet esh 5 smelt helmets 2 1 1 blacksmithy 379 1 ingots 15
if %1 = helmet || %1 = gsh
	gosub _sub helmet gsh 5 smelt helmets 2 2 1 blacksmithy 379 1 ingots 15
if %1 = norse_helm || %1 = norse , #spc , helm || %1 = csh
	gosub _sub norse_helm csh 5 smelt helmets 2 3 1 blacksmithy 379 1 ingots 15
if %1 = plate_helm || %1 = plate , #spc , helm || %1 = osh
	gosub _sub plate_helm osh 5 smelt helmets 2 4 1 blacksmithy 626 1 ingots 15
if %1 = chainmail_hatsuburi || %1 = chainmail , #spc , hatsuburi || %1 = ewo
	gosub _sub chainmail_hatsuburi ewo 7 smelt helmets 2 5 1 blacksmithy 300 1 ingots 20
if %1 = platemail_hatsuburi || %1 = platemail , #spc , hatsuburi || %1 = dwo
	gosub _sub platemail_hatsuburi dwo 5 smelt helmets 2 6 1 blacksmithy 450 1 ingots 20
if %1 = heavy_platemail_jingasa || %1 = heavy , #spc , platemail , #spc , jingasa
	gosub _sub heavy_platemail_jingasa fwo 5 smelt helmets 2 7 1 blacksmithy 450 1 ingots 20
if %1 = light_platemail_jingasa || %1 = light , #spc , platemail , #spc , jingasa
	gosub _sub light_platemail_jingasa vbp 5 smelt helmets 2 8 1 blacksmithy 450 1 ingots 20
if %1 = small_platemail_jingasa || %1 = small , #spc , platemail , #spc , jingasa
	gosub _sub small_platemail_jingasa sbp 5 smelt helmets 2 9 1 blacksmithy 450 1 ingots 20
if %1 = decorative_platemail_kabuto || %1 = decorative , #spc , platemail , #spc , kabuto
	gosub _sub decorative_platemail_kabuto qwo 6 smelt helmets 2 10 1 blacksmithy 900 1 ingots 25
if %1 = platemail_battle_kabuto || %1 = platemail , #spc , battle , #spc , kabuto
	gosub _sub platemail_battle_kabuto rbp 6 smelt helmets 2 11 1 blacksmithy 900 1 ingots 25
if %1 = standard_platemail_kabuto || %1 = standard , #spc , platemail , #spc , kabuto
	gosub _sub standard_platemail_kabuto dcp 6 smelt helmets 2 12 1 blacksmithy 900 1 ingots 25
if %1 = buckler || %1 = buckler , #spc || %1 = fik
	gosub _sub buckler fik 5 smelt shields 3 0 1 blacksmithy 0 1 ingots 10
if %1 = bronze_shield || %1 = bronze , #spc , shield || %1 = gik
	gosub _sub bronze_shield gik 6 smelt shields 3 1 1 blacksmithy 0 1 ingots 12
if %1 = heater_shield || %1 = heater , #spc , shield || %1 = cik
	gosub _sub heater_shield cik 8 smelt shields 3 2 1 blacksmithy 243 1 ingots 18
if %1 = metal_shield || %1 = metal , #spc , shield || %1 = nik
	gosub _sub metal_shield nik 6 smelt shields 3 3 1 blacksmithy 0 1 ingots 14
if %1 = metal_kite_shield || %1 = metal , #spc , kite , #spc , shield
	gosub _sub metal_kite_shield aik 7 smelt shields 3 4 1 blacksmithy 46 1 ingots 16
if %1 = tear_kite_shield || %1 = tear , #spc , kite , #spc , shield
	gosub _sub tear_kite_shield mik_lik 5 smelt shields 3 5 1 blacksmithy 0 1 ingots 8
if %1 = chaos_shield || %1 = chaos , #spc , shield || %1 = hlk
	gosub _sub chaos_shield hlk 5 smelt shields 3 6 1 blacksmithy 850 1 ingots 25
if %1 = order_shield || %1 = order , #spc , shield || %1 = clk
	gosub _sub order_shield clk 7 smelt shields 3 7 1 blacksmithy 850 1 ingots 25
if %1 = bone_harvester || %1 = bone , #spc , harvester || %1 = fuo
	gosub _sub bone_harvester fuo 3 smelt bladed 4 0 1 blacksmithy 330 1 ingots 10
if %1 = broadsword || %1 = atf
	gosub _sub broadsword atf 6 smelt bladed 4 1 1 blacksmithy 354 1 ingots 10
if %1 = crescent_blade || %1 = crescent , #spc , blade || %1 = npo
	gosub _sub crescent_blade npo 1 smelt bladed 4 2 1 blacksmithy 450 1 ingots 14
if %1 = cutlass || %1 = jph
	gosub _sub cutlass jph 8 smelt bladed 4 3 1 blacksmithy 243 1 ingots 8
if %1 = dagger || %1 in tsf_wsf
	gosub _sub dagger tsf_wsf 1 smelt bladed 4 4 1 blacksmithy 0 1 ingots 3
if %1 = katana || %1 = nmh
	gosub _sub katana nmh 6 smelt bladed 4 5 1 blacksmithy 441 1 ingots 8
if %1 = kryss || %1 = vrh
	gosub _sub kryss vrh 2 smelt bladed 4 6 1 blacksmithy 367 1 ingots 8
if %1 = longsword || %1 = jtf
	gosub _sub longsword jtf 7 smelt bladed 4 7 1 blacksmithy 280 1 ingots 12
if %1 = scimitar || %1 = soh
	gosub _sub scimitar soh 5 smelt bladed 4 8 1 blacksmithy 317 1 ingots 10
if %1 = viking_sword || %1 = viking , #spc , sword || %1 = bph
	gosub _sub viking_sword bph 6 smelt bladed 4 9 1 blacksmithy 243 1 ingots 14
if %1 = no-dachi || %1 = edp
	gosub _sub no-dachi edp 10 smelt bladed 4 10 1 blacksmithy 750 1 ingots 18
if %1 = wakizashi || %1 = ycp
	gosub _sub wakizashi ycp 5 smelt bladed 4 11 1 blacksmithy 500 1 ingots 8
if %1 = lajatang || %1 = zcp
	gosub _sub lajatang zcp 12 smelt bladed 4 12 1 blacksmithy 800 1 ingots 25
if %1 = daisho || %1 = jdp
	gosub _sub daisho jdp 8 smelt bladed 4 13 1 blacksmithy 600 1 ingots 15
if %1 = tekagi || %1 = ldp
	gosub _sub tekagi ldp 5 smelt bladed 4 14 1 blacksmithy 550 1 ingots 12
if %1 = shuriken || %1 = gdp
	gosub _sub shuriken gdp 1 smelt bladed 4 15 1 blacksmithy 450 1 ingots 5
if %1 = kama || %1 = fdp
	gosub _sub kama fdp 7 smelt bladed 4 16 1 blacksmithy 400 1 ingots 14
if %1 = sai || %1 = hdp
	gosub _sub sai hdp 7 smelt bladed 4 17 1 blacksmithy 500 1 ingots 12
if %1 = axe || %1 = lsf
	gosub _sub axe lsf 4 smelt axes 5 0 1 blacksmithy 342 1 ingots 14
if %1 = battle_axe || %1 = battle , #spc , axe || %1 = bsf
	gosub _sub battle_axe bsf 4 smelt axes 5 1 1 blacksmithy 305 1 ingots 14
if %1 = double_axe || %1 = double , #spc , axe || %1 = nsf
	gosub _sub double_axe nsf 8 smelt axes 5 2 1 blacksmithy 293 1 ingots 12
if %1 = executioner's_axe || %1 = executioner's , #spc , axe || %1 = zrf
	gosub _sub executioner's_axe zrf 8 smelt axes 5 3 1 blacksmithy 342 1 ingots 14
if %1 = large_battle_axe || %1 = large , #spc , battle , #spc , axe
	gosub _sub large_battle_axe rmh 6 smelt axes 5 4 1 blacksmithy 280 1 ingots 12
if %1 = two_handed_axe || %1 = two , #spc , handed , #spc , axe
	gosub _sub two_handed_axe lph 8 smelt axes 5 5 1 blacksmithy 330 1 ingots 16
if %1 = war_axe || %1 = war , #spc , axe || %1 = uoh
	gosub _sub war_axe uoh 8 smelt axes 5 6 1 blacksmithy 391 1 ingots 16
if %1 = bardiche || %1 = hsf
	gosub _sub bardiche hsf 7 smelt polearms 6 0 1 blacksmithy 317 1 ingots 18
if %1 = bladed_staff || %1 = bladed , #spc , staff || %1 = zto
	gosub _sub bladed_staff zto 4 smelt polearms 6 1 1 blacksmithy 400 1 ingots 12
if %1 = double_bladed_staff || %1 = double , #spc , bladed , #spc , staff
	gosub _sub double_bladed_staff buo 2 smelt polearms 6 2 1 blacksmithy 450 1 ingots 16
if %1 = halberd || %1 in yth_xth
	gosub _sub halberd yth_xth 16 smelt polearms 6 3 1 blacksmithy 391 1 ingots 20
if %1 = lance || %1 = opo
	gosub _sub lance opo 12 smelt polearms 6 4 1 blacksmithy 480 1 ingots 20
if %1 = pike || %1 = cuo
	gosub _sub pike cuo 8 smelt polearms 6 5 1 blacksmithy 470 1 ingots 12
if %1 = short_spear || %1 = short , #spc , spear || %1 = xrh
	gosub _sub short_spear xrh 4 smelt polearms 6 6 1 blacksmithy 453 1 ingots 6
if %1 = scythe || %1 = guo
	gosub _sub scythe guo 5 smelt polearms 6 7 1 blacksmithy 390 1 ingots 14
if %1 = spear || %1 = mtf
	gosub _sub spear mtf 7 smelt polearms 6 8 1 blacksmithy 490 1 ingots 12
if %1 = war_fork || %1 = war , #spc , fork || %1 = rrh
	gosub _sub war_fork rrh 9 smelt polearms 6 9 1 blacksmithy 429 1 ingots 12
if %1 = hammer_pick || %1 = hammer , #spc , pick || %1 = vth
	gosub _sub hammer_pick vth 9 smelt bashing 7 0 1 blacksmithy 342 1 ingots 16
if %1 = mace || %1 = ysf
	gosub _sub mace ysf 14 smelt bashing 7 1 1 blacksmithy 145 1 ingots 6
if %1 = maul || %1 = buh
	gosub _sub maul buh 10 smelt bashing 7 2 1 blacksmithy 194 1 ingots 10
if %1 = scepter || %1 = auo
	gosub _sub scepter auo 8 smelt bashing 7 3 1 blacksmithy 214 1 ingots 10
if %1 = war_mace || %1 = war , #spc , mace || %1 = trh
	gosub _sub war_mace trh 17 smelt bashing 7 4 1 blacksmithy 280 1 ingots 14
if %1 = war_hammer || %1 = war , #spc , hammer || %1 = zth
	gosub _sub war_hammer zth 10 smelt bashing 7 5 1 blacksmithy 342 1 ingots 16
if %1 = tessen || %1 = ddp
	gosub _sub tessen ddp 1 smelt bashing 7 6 2 blacksmithy 850 tailoring 500 2 ingots 16 cloth 10
if %1 = dragon_gloves || %1 = dragon , #spc , gloves || %1 = rko
	gosub _sub dragon_gloves rko 2 trash dragon_scale_armor 9 0 1 blacksmithy 689 1 dragon_scales 16
if %1 = dragon_helm || %1 = dragon , #spc , helm || %1 = lko
	gosub _sub dragon_helm lko 5 trash dragon_scale_armor 9 1 1 blacksmithy 726 1 dragon_scales 20
if %1 = dragon_leggings || %1 = dragon , #spc , leggings || %1 = nko
	gosub _sub dragon_leggings nko 6 trash dragon_scale_armor 9 2 1 blacksmithy 788 1 dragon_scales 28
if %1 = dragon_sleeves || %1 = dragon , #spc , sleeves || %1 = dlo
	gosub _sub dragon_sleeves dlo 5 trash dragon_scale_armor 9 3 1 blacksmithy 763 1 dragon_scales 24
if %1 = dragon_breastplate || %1 = dragon , #spc , breastplate || %1 = pko
	gosub _sub dragon_breastplate pko 10 trash dragon_scale_armor 9 4 1 blacksmithy 850 1 dragon_scales 36
if %1 = jointing_plane || %1 = jointing , #spc , plane || %1 = igg
	gosub _sub jointing_plane igg 2 trash wooden_items 2 1 1 tinkering 0 1 boards 4
if %1 = moulding_planes || %1 = moulding , #spc , planes || %1 = wfg
	gosub _sub moulding_planes wfg 2 trash wooden_items 2 2 1 tinkering 0 1 boards 4
if %1 = smoothing_plane || %1 = smoothing , #spc , plane || %1 = kgg
	gosub _sub smoothing_plane kgg 1 trash wooden_items 2 3 1 tinkering 0 1 boards 4
if %1 = clock_frame || %1 = clock , #spc , frame || %1 = dcg
	gosub _sub clock_frame dcg 2 trash wooden_items 2 4 1 tinkering 0 1 boards 6
if %1 = axle || %1 = zcg
	gosub _sub axle zcg 1 trash wooden_items 2 5 1 tinkering 0 1 boards 1
if %1 = rolling_pin || %1 = rolling , #spc , pin || %1 = bcg
	gosub _sub rolling_pin bcg 1 trash wooden_items 2 6 1 tinkering 0 1 boards 5
if %1 = nunchaku || %1 = idp
	gosub _sub nunchaku idp 5 trash wooden_items 2 0 1 tinkering 700 2 ingots 3 boards 8
if %1 = scissors || %1 = kag
	gosub _sub scissors kag 1 trash tools 3 0 1 tinkering 50 1 ingots 2
if %1 = mortar_and_pestle || %1 = mortar , #spc , and , #spc , pestle
	gosub _sub mortar_and_pestle rqf 1 trash tools 3 1 1 tinkering 200 1 ingots 3
if %1 = scorp || %1 = big
	gosub _sub scorp big 1 trash tools 3 2 1 tinkering 300 1 ingots 2
if %1 = tinker's_tools || %1 = tinker's , #spc , tools || %1 = jtl
	gosub _sub tinker's_tools jtl 1 trash tools 3 3 1 tinkering 100 1 ingots 2
if %1 = hatchet || %1 = fsf
	gosub _sub hatchet fsf 4 trash tools 3 4 1 tinkering 300 1 ingots 4
if %1 = draw_knife || %1 = draw , #spc , knife || %1 = aig
	gosub _sub draw_knife aig 1 trash tools 3 5 1 tinkering 300 1 ingots 2
if %1 = sewing_kit || %1 = sewing , #spc , kit || %1 = hag
	gosub _sub sewing_kit hag 2 trash tools 3 6 1 tinkering 100 1 ingots 2
if %1 = saw || %1 = egg
	gosub _sub saw egg 2 trash tools 3 7 1 tinkering 300 1 ingots 4
if %1 = dovetail_saw || %1 = dovetail , #spc , saw || %1 = agg
	gosub _sub dovetail_saw agg 2 trash tools 3 8 1 tinkering 300 1 ingots 4
if %1 = froe || %1 = zhg
	gosub _sub froe zhg 1 trash tools 3 9 1 tinkering 300 1 ingots 2
if %1 = shovel || %1 = wwf
	gosub _sub shovel wwf 5 trash tools 3 10 1 tinkering 400 1 ingots 4
if %1 = hammer || %1 = cgg
	gosub _sub hammer cgg 2 trash tools 3 11 1 tinkering 300 1 ingots 1
if %1 = tongs || %1 = obg
	gosub _sub tongs obg 2 trash tools 3 12 1 tinkering 350 1 ingots 1
if %1 = smith's_hammer || %1 = smith's , #spc , hammer || %1 = tlh
	gosub _sub smith's_hammer tlh 8 trash tools 3 13 1 tinkering 400 1 ingots 4
if %1 = sledge_hammer || %1 = sledge , #spc , hammer || %1 = fbg
	gosub _sub sledge_hammer fbg 10 trash tools 3 14 1 tinkering 400 1 ingots 4
if %1 = inshave || %1 = cig
	gosub _sub inshave cig 1 trash tools 3 15 1 tinkering 300 1 ingots 2
if %1 = pickaxe || %1 = qpf
	gosub _sub pickaxe qpf n/a trash tools 3 16 1 tinkering 400 1 ingots 4
if %1 = lockpick || %1 = nwh
	gosub _sub lockpick nwh 1 trash tools 3 17 1 tinkering 450 1 ingots 1
if %1 = skillet || %1 = dnd
	gosub _sub skillet dnd 1 trash tools 3 18 1 tinkering 300 1 ingots 4
if %1 = flour_sifter || %1 = flour , #spc , sifter || %1 = ogg
	gosub _sub flour_sifter ogg 1 trash tools 3 19 1 tinkering 500 1 ingots 3
if %1 = fletcher's_tools || %1 = fletcher's , #spc , tools || %1 = ufg
	gosub _sub fletcher's_tools ufg 2 trash tools 3 20 1 tinkering 350 1 ingots 3
if %1 = mapmaker's_pen || %1 = mapmaker's , #spc , pen || %1 = cxf
	gosub _sub mapmaker's_pen cxf 1 trash tools 3 21 1 tinkering 250 1 ingots 1
if %1 = scribe's_pen || %1 = scribe's , #spc , pen || %1 = pbg
	gosub _sub scribe's_pen pbg 1 trash tools 3 22 1 tinkering 250 1 ingots 1
if %1 = gears || %1 = rcg
	gosub _sub gears rcg 1 trash parts 4 0 1 tinkering 50 1 ingots 2
if %1 = clock_parts || %1 = clock , #spc , parts || %1 = fcg
	gosub _sub clock_parts fcg 1 trash parts 4 1 1 tinkering 250 1 ingots 1
if %1 = barrel_tap || %1 = barrel , #spc , tap || %1 = ieg
	gosub _sub barrel_tap ieg 1 trash parts 4 2 1 tinkering 350 1 ingots 2
if %1 = springs || %1 = tcg
	gosub _sub springs tcg 1 trash parts 4 3 1 tinkering 50 1 ingots 2
if %1 = sextant_parts || %1 = sextant , #spc , parts || %1 = xcg
	gosub _sub sextant_parts xcg 2 trash parts 4 4 1 tinkering 300 1 ingots 4
if %1 = barrel_hoops || %1 = barrel , #spc , hoops || %1 = dig
	gosub _sub barrel_hoops dig 5 trash parts 4 5 1 tinkering 0 1 ingots 5
if %1 = hinge || %1 = lcg
	gosub _sub hinge lcg 1 trash parts 4 6 1 tinkering 50 1 ingots 2
if %1 = bola_balls || %1 = bola , #spc , balls || %1 = fkf
	gosub _sub bola_balls fkf 1 trash parts 4 7 1 tinkering 450 1 ingots 10
if %1 = butcher_knife || %1 = butcher , #spc , knife || %1 = gmh
	gosub _sub butcher_knife gmh 1 trash utensils 5 0 1 tinkering 250 1 ingots 2
if %1 = spoon_&#40;left&#41; || %1 = spoon , #spc , &#40;left&#41; || %1 = dsd
	gosub _sub spoon_&#40;left&#41; dsd 1 trash utensils 5 1 1 tinkering 0 1 ingots 1
if %1 = spoon_&#40;right&#41; || %1 = spoon , #spc , &#40;right&#41; || %1 = esd
	gosub _sub spoon_&#40;right&#41; esd 1 trash utensils 5 2 1 tinkering 0 1 ingots 1
if %1 = plate || %1 = nqd
	gosub _sub plate nqd 1 trash utensils 5 3 1 tinkering 0 1 ingots 2
if %1 = fork_&#40;left&#41; || %1 = fork , #spc , &#40;left&#41; || %1 = rrd
	gosub _sub fork_&#40;left&#41; rrd 1 trash utensils 5 4 1 tinkering 0 1 ingots 1
if %1 = fork_&#40;right&#41; || %1 = fork , #spc , &#40;right&#41; || %1 = srd
	gosub _sub fork_&#40;right&#41; srd 1 trash utensils 5 5 1 tinkering 0 1 ingots 1
if %1 = cleaver || %1 = inf
	gosub _sub cleaver inf 2 trash utensils 5 6 1 tinkering 200 1 ingots 3
if %1 = knife_&#40;left&#41; || %1 = knife , #spc , &#40;left&#41; || %1 = trd
	gosub _sub knife_&#40;left&#41; trd 1 trash utensils 5 7 1 tinkering 0 1 ingots 1
if %1 = knife_&#40;right&#41; || %1 = knife , #spc , &#40;right&#41; || %1 = urd
	gosub _sub knife_&#40;right&#41; urd 1 trash utensils 5 8 1 tinkering 0 1 ingots 1
if %1 = goblet || %1 = mtd
	gosub _sub goblet mtd 1 trash utensils 5 9 1 tinkering 100 1 ingots 2
if %1 = pewter_mug || %1 = pewter , #spc , mug || %1 = leg
	gosub _sub pewter_mug leg 1 trash utensils 5 10 1 tinkering 100 1 ingots 2
if %1 = skinning_knife || %1 = skinning , #spc , knife || %1 = bnf
	gosub _sub skinning_knife bnf 1 trash utensils 5 11 1 tinkering 250 1 ingots 2
if %1 = key_ring || %1 = key , #spc , ring || %1 = bfg
	gosub _sub key_ring bfg 1 trash miscellaneous 6 0 1 tinkering 100 1 ingots 2
if %1 = candelabra || %1 = nyd
	gosub _sub candelabra nyd 3 trash miscellaneous 6 1 1 tinkering 550 1 ingots 4
if %1 = scales || %1 = jdj
	gosub _sub scales jdj 4 trash miscellaneous 6 2 1 tinkering 600 1 ingots 4
if %1 = iron_key || %1 = iron , #spc , key || %1 = cfg
	gosub _sub iron_key cfg 1 trash miscellaneous 6 3 1 tinkering 200 1 ingots 3
if %1 = globe || %1 = xbg
	gosub _sub globe xbg 3 trash miscellaneous 6 4 1 tinkering 550 1 ingots 4
if %1 = spyglass || %1 = zvh
	gosub _sub spyglass zvh 3 trash miscellaneous 6 5 1 tinkering 600 1 ingots 4
if %1 = lantern || %1 = lyd
	gosub _sub lantern lyd 2 trash miscellaneous 6 6 1 tinkering 300 1 ingots 4
if %1 = heating_stand || %1 = heating , #spc , stand || %1 = bdj
	gosub _sub heating_stand bdj 1 trash miscellaneous 6 7 1 tinkering 600 1 ingots 4
if %1 = shoji_lantern || %1 = shoji , #spc , lantern || %1 = iao
	gosub _sub shoji_lantern iao 1 trash miscellaneous 6 8 1 tinkering 650 2 ingots 10 boards 5
if %1 = paper_lantern || %1 = paper , #spc , lantern || %1 = kao
	gosub _sub paper_lantern kao 1 trash miscellaneous 6 9 1 tinkering 650 2 ingots 10 boards 5
if %1 = round_paper_lantern || %1 = round , #spc , paper , #spc , lantern
	gosub _sub round_paper_lantern gwn 1 trash miscellaneous 6 10 1 tinkering 650 2 ingots 10 boards 5
if %1 = wind_chimes || %1 = wind , #spc , chimes || %1 = sip
	gosub _sub wind_chimes sip 3 trash miscellaneous 6 11 1 tinkering 800 1 ingots 15
if %1 = fancy_wind_chimes || %1 = fancy , #spc , wind , #spc , chimes
	gosub _sub fancy_wind_chimes rip 3 trash miscellaneous 6 12 1 tinkering 800 1 ingots 15
if !cgiItemName = n/a
	&#123;
	display ok script halting$craftInfo: item %1 not found
	halt
	&#125;
exit
sub _sub
set !cgiItemName %1
set !cgiItemType %2
set !cgiItemWeight %3
set !cgiItemDisposal %4
set !cgiCategoryName %5
set !cgiCategory %6
set !cgiSelection %7
set %1 8

set !cgiSkillCount % . %1
set %1 %1 + 1
set %2 1
for %3 1 !cgiSkillCount
	&#123;
	set !cgiSkillName . %2 % . %1
	set %1 %1 + 1
	set !cgiSkillValue . %2 % . %1
	set %1 %1 + 1
	set %2 %2 + 1
	&#125;

set !cgiMaterialCount % . %1
set %1 %1 + 1
set %2 1
for %3 1 !cgiMaterialCount
	&#123;
	set !cgiMaterialName . %2 % . %1
	set %1 %1 + 1
	set !cgiMaterialValue . %2 % . %1
	set %1 %1 + 1
	set %2 %2 + 1
	&#125;
return

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.