Gibreficul
02-22-2010, 10:26 PM
Since GS is down and I have 30 minutes or so to kill, I'm going to make known that I've uploaded two scripts last night to the repository that work in conjunction with gibs_spell_defs which has been on the repo for a while. The two scripts are gibs_script_vars and gib_total_package.
These scripts contain my skinning/looting/gathering/stashing/targeting methods. The script_vars is a simple if/elsif checkname statement, with lists of variables. This was done so my updates do not overwrite your variables.
A quick rundown:
My scripts, gibs_spell_defs, gib_total_package, and to gibs_script_vars all need to be trusted. The reason is I work with global arrays, variables and methods.
gibs_spell_defs contains at least one definition used by non-casters, wait_rt.
Otherwise, gibs_spell_defs frontloads the logic required to cast almost every spell with one line in a script, or with a simple macro calling that script line. Bolt spells are cast with stance-dancing, open cast spells are prep/cast, bard spells are renewed first if applicable before re-si8nging, (some exceptions) and are auto-recast if armor failure is encountered, and the remaining and majority of the spells are cast, non-targeted, with "incant." A RT check is done follewd by a check for a previously prepped spell that is not the spell being cast, followed by a mana-check. The spell is then cast. Using the example spell, 101, we would do the following within a script for selfcast:
spell_101
and the following to cast at the character Gibreficul.
spell_101("gibreficul")
You can also use ID#s, which is nice for casting at NPCs. Example, using Gibreficul as a pc:
spell_101(GameObj.pcs.find{|pc| pc.noun == "Gibreficul"}.id)
As for gib_total_package, here's a quick rundown of the methods containied within it:
mymove is a simple method I use to execute the go2 script within a script and wait for it to terminate before carrying out the next script lines.
USAGE:
mymove 11
fput "depo all"
mymove 188
(Simple script to go to the illistim bank, deposit coins, and go to the dais.)
loot_me and skin_me both work together, and are interchangable. If you don't skin, you can still use skin_me, but it will skip right to loot_me, and vise versa. Both search the GameObj information for a dead npc and skin/loot or loot it, depending on if you have a $skin_weapon variable set to false, or to your skinning weapon.
skin_me needs to be updated to accept a target, loot_me accepts a target.
find_loot scans the room loot for "good" treasure. it's slightly buggy for lower level areas, as it tends to grab more crap than it needs to grab. Modification of the loot arrays may be required.
find_loot, otherwise, auto-disks boxes, and Ithzir crystal weapons, and will sort gems into your gem container. find_loot calls get_me which is a bunch of mumbo jumbo only someone modding the script. get_me is my stash logic, nothing more, nothing less.
My targeting methods are alright... target_me and gib_target. The former targets stuff without a status effect (stuns, webs, ect) and the latter targets stuff WITH those effects first, both based on a prioritized critter list. They set two variables, $target and $id. $target is the entire GameObj object of the critter it targeted, and is NOT cleared if no target is found. $id is a quick access to $target.id, and is cleared if no target is found. An example:
target_me
while $id
spell_1106($id)
target_me
end
is a simple boneshatter loop for clearing a room out with that spell. Since target_me was used, not gib_target, it will change targets if it stuns and another critter is in the room, not stunned.
IN CLOSING:
There's two main ways to use my triple script package. The first and my intended usage was to use these methods to simplify other scripts. I soon learned that it opened a great macro opportunity for me.
My bard's macro set looks like
F1 = \x;eq silence_me;spell_1002\r
SHIFT+F1 = \x;eq silence_me;spell_1015\r
ect...
F4 = \x;eq loot_me\r
SHIFT +F4 = \x;eq find_loot\r (since sometimes loot_me calls find_loot before the room window updates)
I know a handful of people i've shared this with are happy with its performance so far. It's something different from the spiffy library, which I'm foreign to because I've been working on this. OOPS, 5 minutes to leave for work, perfect timing, hope the game is back when I get home.
These scripts contain my skinning/looting/gathering/stashing/targeting methods. The script_vars is a simple if/elsif checkname statement, with lists of variables. This was done so my updates do not overwrite your variables.
A quick rundown:
My scripts, gibs_spell_defs, gib_total_package, and to gibs_script_vars all need to be trusted. The reason is I work with global arrays, variables and methods.
gibs_spell_defs contains at least one definition used by non-casters, wait_rt.
Otherwise, gibs_spell_defs frontloads the logic required to cast almost every spell with one line in a script, or with a simple macro calling that script line. Bolt spells are cast with stance-dancing, open cast spells are prep/cast, bard spells are renewed first if applicable before re-si8nging, (some exceptions) and are auto-recast if armor failure is encountered, and the remaining and majority of the spells are cast, non-targeted, with "incant." A RT check is done follewd by a check for a previously prepped spell that is not the spell being cast, followed by a mana-check. The spell is then cast. Using the example spell, 101, we would do the following within a script for selfcast:
spell_101
and the following to cast at the character Gibreficul.
spell_101("gibreficul")
You can also use ID#s, which is nice for casting at NPCs. Example, using Gibreficul as a pc:
spell_101(GameObj.pcs.find{|pc| pc.noun == "Gibreficul"}.id)
As for gib_total_package, here's a quick rundown of the methods containied within it:
mymove is a simple method I use to execute the go2 script within a script and wait for it to terminate before carrying out the next script lines.
USAGE:
mymove 11
fput "depo all"
mymove 188
(Simple script to go to the illistim bank, deposit coins, and go to the dais.)
loot_me and skin_me both work together, and are interchangable. If you don't skin, you can still use skin_me, but it will skip right to loot_me, and vise versa. Both search the GameObj information for a dead npc and skin/loot or loot it, depending on if you have a $skin_weapon variable set to false, or to your skinning weapon.
skin_me needs to be updated to accept a target, loot_me accepts a target.
find_loot scans the room loot for "good" treasure. it's slightly buggy for lower level areas, as it tends to grab more crap than it needs to grab. Modification of the loot arrays may be required.
find_loot, otherwise, auto-disks boxes, and Ithzir crystal weapons, and will sort gems into your gem container. find_loot calls get_me which is a bunch of mumbo jumbo only someone modding the script. get_me is my stash logic, nothing more, nothing less.
My targeting methods are alright... target_me and gib_target. The former targets stuff without a status effect (stuns, webs, ect) and the latter targets stuff WITH those effects first, both based on a prioritized critter list. They set two variables, $target and $id. $target is the entire GameObj object of the critter it targeted, and is NOT cleared if no target is found. $id is a quick access to $target.id, and is cleared if no target is found. An example:
target_me
while $id
spell_1106($id)
target_me
end
is a simple boneshatter loop for clearing a room out with that spell. Since target_me was used, not gib_target, it will change targets if it stuns and another critter is in the room, not stunned.
IN CLOSING:
There's two main ways to use my triple script package. The first and my intended usage was to use these methods to simplify other scripts. I soon learned that it opened a great macro opportunity for me.
My bard's macro set looks like
F1 = \x;eq silence_me;spell_1002\r
SHIFT+F1 = \x;eq silence_me;spell_1015\r
ect...
F4 = \x;eq loot_me\r
SHIFT +F4 = \x;eq find_loot\r (since sometimes loot_me calls find_loot before the room window updates)
I know a handful of people i've shared this with are happy with its performance so far. It's something different from the spiffy library, which I'm foreign to because I've been working on this. OOPS, 5 minutes to leave for work, perfect timing, hope the game is back when I get home.