runebook_and_runic_atlas_copier
no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
| — | runebook_and_runic_atlas_copier [2025/02/25 22:20] (current) – created - external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | < | ||
| + | #Runebook and Runic Atlas Copier by Frank Castle | ||
| + | # | ||
| + | #What you need: | ||
| + | # 1) 100% LRC Suit | ||
| + | # 2) Plenty of mana | ||
| + | # 3) Enough blank runes to copy the entire book | ||
| + | # DO NOT HAVE ANY RUNES IN YOUR BACKPACK THAT YOU DO NOT WANT MARKED OVER!!!!!!!!!!!!!! | ||
| + | # | ||
| + | # THIS SCRIPT WILL NOT AUTODEFEND. | ||
| + | # THIS SCRIPT WILL STOP AFTER THE LAST RUNE IN THE BOOK IS COPIED. | ||
| + | # RUNE YOU WILL NEED TO WATCH IT | ||
| + | # | ||
| + | # | ||
| + | # This will copy runebook to runebook or runic atlas to runic atlas so have an empty book | ||
| + | # of the same type | ||
| + | # | ||
| + | # You will need to set the runeTotal below to the number of runes in the book you are copying | ||
| + | |||
| + | runeTotal = 16 #set to the total number of runes you are copying from the runebook/ | ||
| + | |||
| + | |||
| + | |||
| + | from System.Collections.Generic import List | ||
| + | global oldBook | ||
| + | global newBook | ||
| + | global oldRune | ||
| + | global bookType | ||
| + | runeCounter = 0 | ||
| + | |||
| + | contents =[] | ||
| + | blanks = Items.BackpackCount(0x1F14, | ||
| + | sufficientRunes = True | ||
| + | if blanks < runeTotal: | ||
| + | Misc.SendMessage(' | ||
| + | Misc.SendMessage(' | ||
| + | sufficientRunes = False | ||
| + | | ||
| + | if not Player.BuffsExist(' | ||
| + | Spells.CastMagery(" | ||
| + | Misc.Pause(2000) | ||
| + | |||
| + | def setBagContents(): | ||
| + | for items in Items.FindBySerial(Player.Backpack.Serial).Contains: | ||
| + | if items.Serial not in contents: | ||
| + | contents.append(items.Serial) | ||
| + | | ||
| + | def findRune(): | ||
| + | global oldRune | ||
| + | for rune in Items.FindBySerial(Player.Backpack.Serial).Contains: | ||
| + | if rune.Serial not in contents: | ||
| + | oldRune = Items.FindBySerial(rune.Serial) | ||
| + | Misc.Pause(500) | ||
| + | props = Items.GetPropStringList(rune) | ||
| + | Misc.Pause(500) | ||
| + | prop = props[2].split(' | ||
| + | name = '' | ||
| + | n = 3 | ||
| + | for x in prop: | ||
| + | n = n + 1 | ||
| + | if n == len(prop)-1: | ||
| + | break | ||
| + | name = ' | ||
| + | def Recall(): | ||
| + | while Player.Mana < 40: | ||
| + | Misc.Pause(2000) | ||
| + | Journal.Clear() | ||
| + | Spells.CastMagery(" | ||
| + | Target.WaitForTarget(10000, | ||
| + | Target.TargetExecute(rune) | ||
| + | Misc.Pause(4000) | ||
| + | Recall() | ||
| + | if Journal.Search(' | ||
| + | Misc.Pause(30000) | ||
| + | Recall() | ||
| + | Items.Move(oldRune, | ||
| + | Misc.Pause(1100) | ||
| + | newRune = Items.FindByID(0x1F14, | ||
| + | Spells.CastMagery(" | ||
| + | Target.WaitForTarget(10000, | ||
| + | Target.TargetExecute(newRune) | ||
| + | Items.UseItem(newRune) | ||
| + | Misc.Pause(1100) | ||
| + | Misc.ResponsePrompt(' | ||
| + | Misc.Pause(1100) | ||
| + | Items.Move(newRune, | ||
| + | Misc.Pause(1100) | ||
| + | break | ||
| + | | ||
| + | |||
| + | |||
| + | def ChooseBook(): | ||
| + | global oldBook | ||
| + | global bookType | ||
| + | OldBook = Target.PromptTarget(' | ||
| + | Misc.Pause(1100) | ||
| + | oldBook = Items.FindBySerial(OldBook) | ||
| + | if oldBook.ItemID == 0x22C5: | ||
| + | bookType = 1 | ||
| + | DefineRunebook() | ||
| + | elif oldBook.ItemID | ||
| + | bookType = 2 | ||
| + | DefineRunicAtlas() | ||
| + | else: | ||
| + | Misc.SendMessage(' | ||
| + | ChooseBook() | ||
| + | | ||
| + | def DefineRunebook(): | ||
| + | global newBook | ||
| + | NewBook = Target.PromptTarget(' | ||
| + | Misc.Pause(1100) | ||
| + | newBook = Items.FindBySerial(NewBook) | ||
| + | if newBook.ItemID != 0x22C5 and newBook.ItemID != 0x9C16: | ||
| + | Misc.SendMessage(' | ||
| + | DefineRunebook() | ||
| + | | ||
| + | def DefineRunicAtlas(): | ||
| + | global newBook | ||
| + | NewBook = Target.PromptTarget(' | ||
| + | Misc.Pause(1100) | ||
| + | newBook = Items.FindBySerial(NewBook) | ||
| + | if newBook.ItemID != 0x9C16: | ||
| + | Misc.SendMessage(' | ||
| + | DefineRunicAtlas() | ||
| + | |||
| + | def dropRune(): | ||
| + | global runeCounter | ||
| + | global bookType | ||
| + | runeCounter = runeCounter + 1 | ||
| + | setBagContents() | ||
| + | if bookType == 1: | ||
| + | Items.UseItem(oldBook) | ||
| + | Gumps.WaitForGump(89, | ||
| + | Gumps.SendAction(89, | ||
| + | if bookType == 2: | ||
| + | Items.UseItem(oldBook) | ||
| + | Gumps.WaitForGump(498, | ||
| + | Gumps.SendAction(498, | ||
| + | Gumps.WaitForGump(498, | ||
| + | Gumps.SendAction(498, | ||
| + | Misc.Pause(1100) | ||
| + | findRune() | ||
| + | | ||
| + | def Main(): | ||
| + | if sufficientRunes == True: | ||
| + | ChooseBook() | ||
| + | global runeCounter | ||
| + | while runeCounter < runeTotal: | ||
| + | dropRune() | ||
| + | runeCounter | ||
| + | |||
| + | Main() | ||
| + | |||
| + | </ | ||
runebook_and_runic_atlas_copier.txt · Last modified: 2025/02/25 22:20 by 127.0.0.1