BardSkill.mac - trains instruments and various other skills
Posted: Tue Jan 18, 2005 8:55 am
Trains instrument skills, sense traps, disarm traps, forage, hide, sneak and tracking.
Change the songs and instruments to match your setup.
Remember that for most of these skills (actually all but the instrument skills I think) you need to train one point at the guild master to be able to raise them further.
Requires Rusty~'s spell_routines.inc for instrument swapping.
EDIT: Figured out the cap for sense traps, it's level*3.
Change the songs and instruments to match your setup.
Remember that for most of these skills (actually all but the instrument skills I think) you need to train one point at the guild master to be able to raise them further.
Requires Rusty~'s spell_routines.inc for instrument swapping.
EDIT: Figured out the cap for sense traps, it's level*3.
Code: Select all
| BardSkill.mac - blueninja
|
| Trains bard instrument skills and various other skills
|
| To use edit the instruments and songs below to match your setup
| Memorize the songs you want to train, to skip one of the instrument skills
| start the macro without that song memorized.
|
| By default it uses Denon`s disruptive discord to train brass instruments, this is an AoE song
| that will agro npc's close to you. Run it in a non-agro zone like pok or the nexus.
|
#include spell_routines.inc
#event Skillup "You have become better at #1#! (#2#)"
Sub Event_Skillup(string Line,string SkillN, string SkillL)
/echo Skill ${SkillN}: ${SkillL}
/return
Sub Main
|------------ Edit stuff here to configure the macro -----------------------
| Define what skills to be trained 1=train, 0=don't train
/declare TrainInstrument bool local 1
/declare TrainForage bool local 1
/declare TrainSneak bool local 1
/declare TrainHide bool local 1
/declare TrainSense bool local 1
/declare TrainDisarmtraps bool local 1
/declare TrainTrack bool local 1
/declare SkillName[5] string outer
/declare SongName[5] string local
/declare Instrument[5] string local
| Define the songs and instruments to use for the various skills
/varset SkillName[1] Percussion instruments
/varset SongName[1] Selo`s accelerando
/varset Instrument[1] Thunderous drum of Karana
/varset SkillName[2] Wind instruments
/varset SongName[2] Shauri`s Sonorous Clouding
/varset Instrument[2] Flute of eternal night
/varset SkillName[3] Brass instruments
/varset SongName[3] Denon`s disruptive Discord
/varset Instrument[3] Combine horn
/varset SkillName[4] Stringed instruments
/varset SongName[4] Hymn of restoration
/varset Instrument[4] Combine mandolin
/varset SkillName[5] Sing
/varset SongName[5] Jonthan's Whistling Warsong
/varset Instrument[5] None
|------------ Below this line nothing should need to be edited -----------
/if (${Me.Level}<12 && ${Me.Race.ID}!=4) /varset TrainForage 0
/if (${Me.Level}<17) /varset TrainSneak 0
/if (${Me.Level}<25 && ${Me.Race.ID}!=4) /varset TrainHide 0
/if (${Me.Level}<20) /varset TrainSense 0
/if (${Me.Level}<20) /varset TrainDisarmtraps 0
/if (${Me.Level}<35) /varset TrainTrack 0
/declare MaxSkill int local ${Math.Calc[${Me.Level}*5+5]}
/if (${MaxSkill}>235) /varset MaxSkill 235
/echo Max instrument skill: ${MaxSkill}
/declare MaxForage int local ${Math.Calc[${Me.Level}*5+5]}
/if (${MaxForage}>55) /varset MaxForage 55
/declare MaxSneak int local ${Math.Calc[${Me.Level}*5+5]}
/if (${MaxSneak}>75) /varset MaxSneak 75
/declare MaxHide int local ${Math.Calc[${Me.Level}*5+5]}
/if (${MaxHide}>40) /varset MaxHide 40
/declare MaxSense int local ${Math.Calc[${Me.Level}*3]}
/if (${MaxSense}>120) /varset MaxSense 120
/declare MaxDisarmtraps int local ${Math.Calc[${Me.Level}*5+5]}
/if (${MaxDisarmtraps}>120) /varset MaxDisarmtraps 120
/declare MaxTrack int local ${Math.Calc[${Me.Level}*5+5]}
/if (${MaxTrack}>100) /varset MaxTrack 100
/declare SneakTimer timer outer
/declare HideTimer timer outer
/declare CurSkill int outer 1
:loop
/if ((${CurSkill}>5 || !${TrainInstrument}) && !(${TrainForage} || ${TrainSneak} || ${TrainHide} || ${TrainSense} || ${TrainDisarmtraps} || ${TrainTrack})) {
/echo Training done!
/endmacro
}
/if (!${Me.Standing}) /stand
/doevents
/if (${CurSkill}<6 && ${Me.Skill[${SkillName[${CurSkill}]}]}>=${MaxSkill}) {
/varcalc CurSkill ${CurSkill}+1
/if (${CurSkill}>5) {
/echo Instrument skills done!
/stopsong
/goto :loop
}
/if (!${Me.Gem[${SongName[${CurSkill}]}]}) {
/echo ${SongName[${CurSkill}]} not memmed! Skipping ${SkillName[${CurSkill}]}!
/varcalc CurSkill ${CurSkill}+1
/goto :loop
}
/echo Training ${SkillName[${CurSkill}]}: ${Me.Skill[${SkillName[${CurSkill}]}]}
/goto :loop
}
/if (${CurSkill}<6 && (!${InvSlot[offhand].Item.ID} || ${InvSlot[offhand].Item.Name.NotEqual[${Instrument[${CurSkill}]}]}) && ${Instrument[${CurSkill}].NotEqual[None]}) /call EquipItem "${Instrument[${CurSkill}]}|offhand"
/if (${CurSkill}<6 && (!${Me.Casting.ID} || ${Me.Casting.Name.NotEqual[${SongName[${CurSkill}]}]})) {
/if (${Me.Casting.ID}) /stopsong
/echo Singing: ${SongName[${CurSkill}]} (${SkillName[${CurSkill}]}: ${Me.Skill[${SkillName[${CurSkill}]}]} / ${MaxSkill})
/cast "${SongName[${CurSkill}]}"
/delay 5
}
/if (${TrainSense} && ${Me.Skill[sense traps]}>=${MaxSense}) {
/echo Sense traps done!
/varset TrainSense 0
}
/if (${TrainDisarmtraps} && ${Me.Skill[disarm traps]}>=${MaxDisarmtraps}) {
/echo Disarm traps done!
/varset TrainDisarmtraps 0
}
/if (${TrainTrack} && ${Me.Skill[tracking]}>=${MaxTrack}) {
/echo Track done!
/varset TrainTrack 0
}
/if (${TrainHide} && ${Me.Skill[hide]}>=${MaxHide}) {
/echo Hide done!
/varset TrainHide 0
}
/if (${TrainSneak} && ${Me.Skill[sneak]}>=${MaxSneak}) {
/echo Sneak done!
/varset TrainSneak 0
}
/if (${TrainForage} && ${Me.Skill[forage]}>=${MaxForage}) {
/echo Forage done!
/varset TrainForage 0
}
/if (${TrainForage} && ${Me.AbilityReady[forage]} && ${Me.Standing}) /doability forage
/delay 2
/if (${Cursor.ID}) /autoinv
/if (${TrainSneak} && ${Me.AbilityReady[sneak]} && !${SneakTimer} && ${Me.Standing} && ${Me.Skill[sneak]}<${MaxSneak}) {
/doability sneak
/delay 5
/varset SneakTimer 120
/doability sneak
}
/delay 2
/if (${TrainHide} && ${Me.AbilityReady[hide]} && !${HideTimer} && ${Me.Standing}) {
/doability hide
/delay 5
/varset HideTimer 120
/doability Hide
}
/delay 2
/if (${TrainSense} && ${TrainSense} && ${Me.AbilityReady[sense traps]} && ${Me.Standing}) /doability "sense traps"
/delay 2
/if (${TrainDisarmtraps} && ${Me.AbilityReady[disarm traps]} && ${Me.Standing}) /doability "disarm traps"
/delay 2
/if (${TrainTrack} && ${Me.AbilityReady[tracking]} && ${Me.Standing}) /doability "tracking"
/goto :loop
/return