Nacrem Runetome Copy by nacrem
Description from the author:
@setvar! use_summon 1
@setvar! use_hiding 0
# Define your starting rune here by its Gump ID.
# Rune 1 = 200 | Rune 2 = 201 | Rune 3 = 202 | Rune 4 = 203 | Rune 5 = 204
# Rune 6 = 205 | Rune 7 = 206 | Rune 8 = 207 | Rune 9 = 208 | Rune 10 = 209
# Rune 11= 210 | Rune 12= 211 | Rune 13= 212 | Rune 14= 213 | Rune 15= 214
# Rune 16= 215 | Rune 17= 216 | Rune 18= 217 | Rune 19= 218 | Rune 20= 219
# Rune 21= 220 | Rune 22= 221 | Rune 23= 222 | Rune 24= 223 | Rune 25= 224
# Rune 26= 225
@setvar! starting_gump_id 200
@setvar! current_button 10
@setvar! wait_short 1000
@setvar! wait_loop 500
@setvar! wait_cast 2500
@setvar! wait_summon 4000
@setvar! wait_travel 3500
@setvar! wait_target 5000
@setvar! wait_gump 5000
@setvar! wait_sync 2500
@setvar! wait_bounce 2000
if use_summon == 1
if skill 'Magery' < 80
@setvar! use_summon 0
overhead 'Magery below 80: Summons disabled.' 34
wait wait_short
endif
endif
if use_hiding == 1
if skill 'Hiding' < 100
@setvar! use_hiding 0
overhead 'Hiding below 100: Hiding disabled.' 34
wait wait_short
endif
endif
if not listexists 'rune_list'
createlist 'rune_list'
else
clearlist 'rune_list'
endif
if not listexists 'countdown_list'
createlist 'countdown_list'
else
clearlist 'countdown_list'
endif
pushlist 'rune_list' 200
pushlist 'rune_list' 201
pushlist 'rune_list' 202
pushlist 'rune_list' 203
pushlist 'rune_list' 204
pushlist 'rune_list' 205
pushlist 'rune_list' 206
pushlist 'rune_list' 207
pushlist 'rune_list' 208
pushlist 'rune_list' 209
pushlist 'rune_list' 210
pushlist 'rune_list' 211
pushlist 'rune_list' 212
pushlist 'rune_list' 213
pushlist 'rune_list' 214
pushlist 'rune_list' 215
pushlist 'rune_list' 216
pushlist 'rune_list' 217
pushlist 'rune_list' 218
pushlist 'rune_list' 219
pushlist 'rune_list' 220
pushlist 'rune_list' 221
pushlist 'rune_list' 222
pushlist 'rune_list' 223
pushlist 'rune_list' 224
pushlist 'rune_list' 225
pushlist 'countdown_list' 26
pushlist 'countdown_list' 25
pushlist 'countdown_list' 24
pushlist 'countdown_list' 23
pushlist 'countdown_list' 22
pushlist 'countdown_list' 21
pushlist 'countdown_list' 20
pushlist 'countdown_list' 19
pushlist 'countdown_list' 18
pushlist 'countdown_list' 17
pushlist 'countdown_list' 16
pushlist 'countdown_list' 15
pushlist 'countdown_list' 14
pushlist 'countdown_list' 13
pushlist 'countdown_list' 12
pushlist 'countdown_list' 11
pushlist 'countdown_list' 10
pushlist 'countdown_list' 9
pushlist 'countdown_list' 8
pushlist 'countdown_list' 7
pushlist 'countdown_list' 6
pushlist 'countdown_list' 5
pushlist 'countdown_list' 4
pushlist 'countdown_list' 3
pushlist 'countdown_list' 2
pushlist 'countdown_list' 1
overhead 'Select runebook to copy FROM (Must be on ground)' 1150
@setvar! runebookinput
overhead 'Select runebook to copy TO (Must be in backpack)' 1150
@setvar! runebookoutput
overhead 'Select your stack of BLANK RUNES (Must be in backpack)' 1150
@setvar! blank_rune_stack
overhead 'Checking resources...' 1150
wait wait_short
if counttype 0x0F7A < 55
overhead 'Insufficient Black Pearl.' 34
stop
endif
if counttype 0x0F7B < 55
overhead 'Insufficient Blood Moss.' 34
stop
endif
if counttype 0x0F86 < 55
overhead 'Insufficient Mandrake Root.' 34
stop
endif
overhead 'Starting copy process...' 90
wait wait_short
foreach current_rune in 'rune_list'
@setvar! marks_left countdown_list[0]
poplist 'countdown_list' front
if current_rune >= starting_gump_id
overhead marks_left 90
sysmsg '--- RUNES REMAINING ---' 90
sysmsg marks_left 90
overhead 'Preparing next rune...' 1150
wait 500
if use_summon == 1
if followers == 0
overhead 'Summon missing. Casting Earth Elemental...' 88
while followers == 0
if mana < 50
overhead 'Meditating for summon mana...' 88
useskill 'meditation'
while mana < 85
wait wait_loop
endwhile
endif
clearsysmsg
cast 'Earth Elemental'
wait wait_summon
if insysmsg 'fizzle'
overhead 'Summon fizzled. Retrying...' 53
elseif insysmsg 'disturbed'
overhead 'Summon interrupted. Retrying...' 53
endif
endwhile
overhead 'Earth Elemental summoned.' 90
endif
endif
if mana < 45
overhead 'Meditating for spell mana...' 88
useskill 'meditation'
while mana < 85
wait wait_loop
endwhile
endif
if find runebookinput ground
overhead 'Opening source runebook...' 1150
dclick runebookinput
waitforgump 167090027 wait_gump
overhead 'Selecting rune...' 1150
gumpresponse current_rune
waitforgump 167090027 wait_gump
overhead 'Teleporting to location...' 1150
gumpresponse current_button
wait wait_travel
if dead
overhead 'Character is dead. Halting script.' 34
stop
endif
if use_summon == 1
overhead 'Commanding pet to guard...' 1150
say 'all guard'
wait wait_short
endif
if use_hiding == 1
overhead 'Attempting to hide...' 88
useskill 'Hiding'
wait wait_short
endif
@setvar! mark_success 0
overhead 'Marking blank rune...' 88
while mark_success == 0
clearsysmsg
cast 'Mark'
wft wait_target
target blank_rune_stack
wait wait_cast
# Failsafe: If the stack is depleted, the targeting cursor will remain active.
if targetexists
overhead 'Out of blank runes! Halting script.' 34
canceltarget
stop
endif
if insysmsg 'fizzle'
overhead 'Mark fizzled. Retrying...' 53
if mana < 20
overhead 'Meditating for Mark mana...' 88
useskill 'meditation'
while mana < 85
wait wait_loop
endwhile
endif
elseif insysmsg 'disturbed'
overhead 'Mark interrupted by damage. Retrying...' 53
if mana < 20
overhead 'Meditating for Mark mana...' 88
useskill 'meditation'
while mana < 85
wait wait_loop
endwhile
endif
else
overhead 'Mark successful.' 90
@setvar! mark_success 1
endif
endwhile
@setvar! recall_success 0
overhead 'Recalling back home...' 88
while recall_success == 0
clearsysmsg
say '[Recall Home'
wait wait_travel
if dead
overhead 'Character died during recall. Halting script.' 34
stop
endif
if find runebookinput ground
overhead 'Arrived home.' 90
@setvar! recall_success 1
elseif insysmsg 'disturbed'
overhead 'Recall interrupted. Retrying...' 53
if mana < 15
overhead 'Meditating for Recall mana...' 88
useskill 'meditation'
while mana < 85
wait wait_loop
endwhile
endif
else
overhead 'Recall failed/Cooldown. Retrying...' 53
wait wait_short
endif
endwhile
wait wait_sync
# Mask the blank rune stack so Razor only detects the newly marked rune
ignore blank_rune_stack
wait 250
if findtype 0x1F14 backpack as marked_rune
@setvar! drop_success 0
@setvar! retry_counter 1
while drop_success == 0
overhead 'Moving rune to new book...' 1150
lift marked_rune
wait 500
drop runebookoutput
wait 1500
if find marked_rune backpack
overhead 'Server bounced the drop. Retrying...' 53
if retry_counter == 1
@setvar! retry_counter 2
elseif retry_counter == 2
@setvar! retry_counter 3
elseif retry_counter == 3
@setvar! retry_counter 4
elseif retry_counter == 4
overhead 'Drop failed 4 times. Halting. Is the location a duplicate?' 34
clearignore
stop
endif
wait wait_bounce
else
overhead 'Rune added to book.' 90
@setvar! drop_success 1
endif
endwhile
else
overhead 'Could not find the marked rune.' 34
clearignore
stop
endif
# Unmask the blank rune stack for the next sequence
clearignore
else
overhead 'Critical Error: Source runebook not found at home!' 34
stop
endif
endif
if current_button == 10
@setvar! current_button 20
else
@setvar! current_button 10
endif
endfor
overhead 'Runebook Copied!' 90Select From book - Select Target book - Select Runes
Setup Summon - Setup Hiding
Have a rune called Home to say '[Recall Home'








