PDA

View Full Version : modify fire guardians script for a wizard to also kill firephantoms



IorakeWarhammer
06-14-2010, 11:27 AM
FIXED BELOW: BUT NOW IT ONLY KILLS GUARDIANS!!!

IorakeWarhammer
06-18-2010, 08:57 AM
#Similar to but vastly superior to my cats.lic
#A script for mindlessly killing fire guardians near Wehnimer's. Rests in the park. Kills only fire guardians, loots them and picks up certain worthwhile items.
#returns to town when 2 kills beyond fried, sells a container that you will have to set up (in the gohunting definition),
#banks any silvers you have and rests in the park.
#This is more for peoples' educational use, however if you were to actually use this you would need to set up:
#stow container, ready list (weapon and shield), anything you did or did not want picked up (defined in grabthese and craplist)
#and the whole gemshop routine currently references a "greatcloak"
# ***Written by Psighs/Sixbits - intended for educational purposes, it probably won't work that well for you.

def rest
echo "**PREPARE TO OWN!!!!!!!!!"
until percentmind < 75
pause 30
end
gohunting
end

def attack_routine
stand
killingtime
fput "stance def"
loot
end



def loot
grabthese=["diamond", "emerald", "onyx", "faenor-bloom", "star ruby", "wand", "aetherstone", "agate", "azurite", "beryl", "bloodjewel", "bloodstone", "bluerock", "caederine", "cordierite", "deathstone", "doomstone", "dreamstone", "eostone", "firestone", "galena", "geode", "hyacinth", "pyrite", "peridot", "rhimar", "riftshard", "riftstone", "rosepar", "wyrdshard", "spinel", "faenor", "blazestar", "despanal", "feystone", "ruby", "pearl", "sapphire", "opal", "jacinth", "garnet", "moonstone", "topaz", "gem", "coral", "sunstone", "starstone", "quartz", "heliodor", "glimaerstone", "carbuncle", "turquoise", "chalcedony", "tourmaline", "obsidian", "zircon", "amethyst", "lapis", "amber" , "sphene" , "shell", "stone", "lapis","gem","mother-of-pearl","lazuli", "jade", "ivory", "nugget"]
fput "loot"
craplist=[/heavy .*? orb/]
if RoomObj.loot and !(checkloot.to_a & grabthese).empty?
fput "store weapon"
(0..RoomObj.loot.length).each do |x|
echo "checking loot object number #{x}"
if grabthese.include?(RoomObj.loot[x].noun) and craplist.include?(RoomObj.loot[x].name)
echo "Item found is a piece of shit. Ignoring it."
elsif grabthese.include?(RoomObj.loot[x].noun)
echo "Good item found, grabbing it:"
fput "get ##{RoomObj.loot[x].id}"
fput "stow right"
pause 2
fput "get my WEAPON"
end
end
end
end

def stand
if !Char.standing?
fput "stand"
waitrt?
end
end

def killingtime
waitrt?
while target = RoomObj.npcs.find { |npc| npc.status != 'dead' and npc.name != "firephantom"}
fput "prep 903"
fput "stance off"
fput "cast at fire guardian"
pause 1
fput "stance def"
if matchtimeout(1,"You currently have no valid target|What were you referring to?") and checknpcs
walk
break
end
if RoomObj.npcs.find { |npc| npc.status == 'dead'}
fput "loot"
fput "get my WEAPON"
end
end
end

def wander
bad_rooms = ['4121','8141','7902','7905']
pastfried=0
until pastfried >= 2 or dead?
room = Room.current
begin
next_room = room.wayto.keys[rand(room.wayto.keys.length)]
end while bad_rooms.include?(next_room)
way = room.wayto[next_room]
if way.class == String
move(way)
else
way.call
end
if checkpcs or checkloot.include?("disk")
sleep 1
elsif RoomObj.npcs.find { |npc| npc.status == 'dead' }
loot
elsif checknpcs and RoomObj.npcs.find { |npc| npc.status != 'dead' and npc.name != "firephantom"}
if checkmind(7)
pastfried=pastfried+1
end
echo "what have we here?"
until !checknpcs or dead? or !RoomObj.npcs.find { |npc| npc.status != 'dead' and npc.name != "firephantom"}
attack_routine
end
end
end
end

def gohunting
stand
multifput("stance def","ready weapon","ready shield")
pause 2
fput "prep 401"
fput "cast"
pause 4
fput "prep 905"
fput "cast"
pause 4
fput "prep 503"
fput "cast"
pause 4
fput "prep 508"
fput "cast"
pause 4
fput "prep 507"
fput "cast"
pause 4
fput "prep 513"
fput "cast"
pause 4
fput "wear my SHIELD"
fput "get my pur pot"
pause 1
fput "drink my pure pot"
fput "put my pot in my back"
pause 1
fput "rem my SHIELD"
pause 70
fput "rem my SHIELD"
pause 1
start_script 'go2', [ '4124', '_disable_confirm_' ]
waitfor "The walls and ceiling of this room curve gently around, blending into each other without any sharp corners or straight lines."
wander
if dead?
fput "depart confirm"
fput "depart confirm"
pause 120
fput "quit"
end
start_script 'go2', [ '1776', '_disable_confirm_' ]
pause 20
multifput("put WEAPON in back","remove my back","sell my back","wear my back","get WEAPON from back")
pause 10
start_script 'go2', [ '400', '_disable_confirm_' ]
waitfor "First Elanith Bank, Teller"
fput "deposit all"
start_script 'go2', [ '9400', '_disable_confirm_' ]
rest
end

if Room.current.id == 9400
rest
elsif
gohunting
end

pabstblueribbon
06-18-2010, 06:22 PM
Ahh. The old hunting script I based some of my originals on.

Actually, it will kill anything other than a firephantom.

Hence the != "firephantom".