• IS THIS SITE UGLY? Click "RG3" at the very bottom-left of this page to change it. To dismiss this notice, click the X --->
MasterBlaster by Maskoi Shamelessly edited by Neophys

Combat Assist MasterBlaster by Maskoi Shamelessly edited by Neophys 1.0

Download now: Join us with Level 2 access
or earn your way in with RedCents.
Other Authors
Maskoi, Neophys
Software Requirements
ninjadvloot.inc
Server Type
Live, Test Server
Hi,

There is alot of scripts already for Wizards all going for ultimate dps etc.

I needed something simple, which would accept trades, and be usable in a dungeon crawl in droga.

When enabled in settings (lostNFound) it will auto navigate to the assisted toon.
- If you type /g moce on the controlled toon it will stick to you
- If you type /g tome on the controlled toon it will /nav to you, using mesh.
- If wizard is 110 range from the controlled toon, it will /nav to you.

Some random things were added to make it less bot like.
- It will randomly sit down after mobs killed (dungeon)
- It will nuke at random percentages (between 90 and 98)


There are some bugs with the cast rutine, but it works and blasts as i expect.

Rich (BB code):
| ******************************************************************************|
|  MasterBlaster by Maskoi and heavily modified by Neophys
|
|  What is it?
|  A macro entirely dedicated to AFKing group play for a Wizard.
|
|
| This macro was written exclusively for subscribers of Redguides and is not to be
| published anywhere else without explicit approval by Maskoi.
|
| Contact: [http://www.redguides.com/community/member.php/225520-neophys]
| ******************************************************************************|
#include ninjadvloot.inc
#turbo 80

| ************************* EVENTS ****************************************|
#Event GoMProc                     "#*#granted#*#gift of#*#mana#*#"
#Event GoMProc                     "You feel strengthened by magic."
#Event GoMProc                     "You feel strengthened by a gift of magic."
#Event GroupMessage                "#1# tells the group, '#2#'"
#event Zone                       "You have entered #1#."
#event Zone                       "LOADING, PLEASE WAIT..."
#event KillShot                 "#*#You have slain#*#"
#event eqbcmissedping             "#*#did not recieve expected ping#*#"

| ************************* MAIN ****************************************|
Sub Main

| ************************* Change These ****************************************|
    /declare MoveToMeWord                         string        outer        moce
    /declare NavigateToMeWord                     string        outer        Tome
    /declare EQBCAnnounce                        int         outer         1
    /declare MountOn                             int         outer         1
    /declare MedAt                                 int         outer         10
    /declare HarvestAt                             int         outer         70
    /declare LootCorpses                         int         outer         1
| ************************* Do not change these ****************************************|
    /declare MacVersion                         string         outer         1.2.Modified
    /declare MA                                 string        outer        xtarget
    /declare NukeAt                             int         outer         98
    /declare NukeStart                             int         outer         98
    /declare RandomSit                            int         outer         2
    /declare NukeDelay                             int         outer         1
    /declare KBuffsTimer                         timer         outer         0
    /declare GoMDicho                             int         outer         1
    /declare LostNFound                            int         outer         1
    /declare TCast                                 int         outer         1
    /declare TCastGem                             int         outer         0
    /declare looserange                            int         outer         300
    /declare MR                                 int         outer         -1
    /declare Debugging                            bool        outer       False
  
  

    /call SetupAdvLootVars
    /call FindCastSpell twincast AssignVar
  
    /if (${Defined[Param0]}) /varset MA ${Param0}
    /if (${Defined[Param0]} && ${Defined[Param1]}) /varset NukeStart ${Param1}
    /if (!${Defined[Param0]}) {
        /if (${Target.ID} && (${Target.Type.Equal[PC]} || ${Target.Type.Equal[Pet]} || ${Target.Type.Equal[Mercenary]})) {
            /varset MA ${Target.CleanName}
        } else {
            |/echo No mainassist specified or targeted. Will use Xtarget1
            /varset MA xtarget
        }
    }

    /if (!${mainassist.Equal[MA]}) {  
        /if (${EQBCAnnounce} && ${EQBC.Connected}) {
            /bc  [+w+] --[ MasterBlaster started, assisting [+g+]${MA} [+w+] randomly between [+g+] ${NukeStart}% and ${Math.Calc[${NukeStart}+8]} HP[+w+] ]--  
        } else {
            /echo Will be assisting: ${MA} at ${NukeStart}
        }
    } else {
        /echo Will be assisting XTarget1 at ${NukeStart}
    }
   
    /echo Starting MasterBlaser v${MacVersion}
  
    :MainLoop 
  
        /if (${Me.State.Equal[HOVER]}) {
      
      
            /goto :MainLoop
        }
        /doevents
        /if (!${Me.Moving} && !${Me.Invis}) {
      
        |    /if (${SpawnCount[npc radius 15]} < 1 && ${LootCorpses}) {
        |         /call LootMobs
        |    }

      
            /if (${Me.PctMana}>=20 && !${Target.ID}) /call BuffsRequireMana
            /if (!${Target.ID} ) /call Buffs
      
      
            /varset RandomSit ${Math.Rand[10]}
            /varset NukeAt  ${Math.Calc[${NukeStart}+${Math.Rand[8]} ]}
       
            /if (${Me.PctMana}>=21) {

                /if (!${Target.ID} || !${Target.Type.Equal[NPC]} || ${MR}<1) {
                    /call AssistMA
                    /varset MR ${Macro.Return}
                    /if (${MR}>1) {
                        /if (${EQBC.Connected}) /bc  [+w+] --[ Assisting target found: [+g+]${Target.CleanName} [+w+]] -- [[+P+] ${Time.Time24}[+w+]]  
                         /echo --[ Target found: ${Target.CleanName} [${Target.ID}] ]-- [${Time.Time24}]
                    }          
                }
              
                /if (${Target.Type.Equal[npc]} && ${Target.PctHPs}<=${NukeAt}) {
                    /if (${EQBCAnnounce} && ${EQBC.Connected})  /bc  [+w+] --[ Assisting target found: [+g+]${Target.CleanName} [+w+]]-- [[+P+] ${Time.Time24}[+w+]]  
                    /call AdditionalCasts
                    /call Nukem
                }
            }
            /delay 10
          
          
            /if (${LostNFound}) /call AmILostFromGroup
            /call TradeAccept
          
            /if (${MountOn} && !${Me.Mount.ID} ) /call FindMount
            /if (${Me.PctMana}<=${HarvestAt} && ${Me.CombatState.NotEqual[COMBAT]}) /call HarvestMana
            /if ( !${Me.Mount.ID} && !${Me.Sitting} && !${Me.Casting.ID}  ) {
                /echo Sitting down in ${RandomSit}s to fool other players
                /delay ${RandomSit}s
                /sit
            }
              
        }
    /goto :MainLoop
    /return
   
  
    Sub AssistMA
        /declare i int local
        /declare tempID int local ${Target.ID}
        /if (${Me.Moving}) /return
      
        /if (!${mainassist.Equal[xtarget]}) {
             /if (${Debugging})     /echo MA not xtarget
            /if (${Spawn[${MA}].ID} && ${Spawn[${MA}].Distance}<${looserange} ) {
                |/if (${Spawn[${tempID}].PctHPs}<=${NukeAt})
                /assist ${MA}
                          /if (${Debugging})  /echo assisting "${MA}"
                /delay 5
                /varset tempID ${Target.ID}
                       /if (${Debugging})     /echo tempID ${Target.ID}
            /if (${Debugging})    /echo Id of targeted mob: ${tempID}
            }
        } else    {
             /if (${Debugging})     /echo MA :  xtarget
            /if (${Me.XTarget[1].ID} && ${Spawn[${Me.XTarget[1].ID}].Distance}<${looserange} ) {
                    /varset tempID ${Me.XTarget[1].ID}
                    /target id ${tempID}
                /if (${Debugging})    /echo ${tempID}
                    /if (${Debugging})    /echo Id of targeted mob: ${tempID}
            }
        }
        /if ( ${Spawn[${tempID}].PctHPs}<=${NukeAt} && ${Spawn[${tempID}].Distance}<${looserange} && ${Spawn[${tempID}].LineOfSight} && ((${Spawn[${tempID}].Type.Equal[npc]}) || (${Spawn[${tempID}].Type.Equal[pet]} && !${Spawn[${tempID}].Master.Type.Equal[pc]})) ) {
         /if (${Debugging})     /echo Returning ID:${Target.ID}
          /return ${tempID}
       } else {
            /if (${Debugging})     /echo return -1
          /return -1
       }
    /return


    Sub FindCastSpell(SText, EText)
        /declare i int local 0
            /for i 1 to 12
            /if (${Spell[${Me.Gem[${i}]}].Name.Find[${SText}]}) {
                /if (${EText.Equal[AssignVar]}) {
                    /if (${SText.Equal[twincast]}) /varset TCastGem ${i}
                    | /echo  ${TCastGem}
                    /return
                }
                /delay 5s !${Me.SpellInCooldown}
                /delay 5
                /if (${Me.SpellReady[${i}]}) {
                    /echo Casting ${EText} ${Me.Gem[${i}]}
                    /cast "${Me.Gem[${i}]}"
                    /delay 15s !${Me.Casting.ID}
                }
            }
        /next i
    /return 0
  
    Sub NamedCasts
        /if (${Me.AltAbilityReady[Fundament: Second Spire of Arcanum]} && ${Target.Named}) /alt act 1351
        /if (${Me.AltAbilityReady[Improved Twincast]} && ${Target.Named}) /alt act 515
        /if (${Me.AltAbilityReady[Arcane Destruction]} && ${Target.Named}) /alt act 1265
        /if (${Me.AltAbilityReady[Arcane Fury]} && ${Target.Named}) /alt act 840
        /if (${Me.AltAbilityReady[Focus of Arcanum]} && ${Target.Named}) /alt act 1211
        /if (${Me.AltAbilityReady[Call of Xuzl]} && ${Target.Named}) /alt act 208
    /return
  
    Sub AdditionalCasts
        /if (!${Target.Buff[Lower Element](bool)} && ${Me.AltAbilityReady[Lower Element]} ) /alt act 1262
        /if (!${Target.Buff[Atol's Shackles](bool)} && ${Me.AltAbilityReady[Atol's Shackles]} ) /alt act 1155
    /return
  
    Sub AmILostFromGroup
                /if (${Spawn[${MA} pc].Distance}<=110)  /return
              
                /if (${EQBCAnnounce} && ${EQBC.Connected})  {
                    /bc  [+w+] Blaster got lost from the master, running to [+g+]${MA}    
                } else {
                    /echo Blaster got lost from the master, running to ${MA}
                }
                :LooopAmILostFromGroup
                    /target id ${Spawn[${MA} pc].ID}
                    /nav target
                    /delay 10
                /if (${Spawn[${MA} pc].Distance}>=35) /goto :LooopAmILostFromGroup
    /return
  
    Sub Nukem
        /if (!${Spawn[${Target.ID}].LineOfSight}) /return
        /if (!${Target.Type.Equal[npc]}) /return
        /declare i int local
      
        :NukeCycle
        /for i 1 to 8
      
        /if (${Me.PctMana}<=20) /return
        /if (!${Target.ID}) /return
        /if (${MR}<1) /return
        /if (!${Target.Type.Equal[npc]}) /return
        /if (!${Spawn[${Target.ID}].LineOfSight}) /return
        /if (${Target.ID}!=${MR}) /return
      
            /doevents
             /if (${GoMDicho} && ${Spell[${Me.Gem[${i}]}].Name.Find[dichotomic]}) /goto :SkipSpell
          
            /if (${Target.Named}) /call NamedCasts
            /if (!${Me.SpellReady[${i}]}) /goto :SkipSpell
             |:awaitSpell
             |/if (${Me.Casting(bool)}) /goto :awaitSpell
      
                    /if (${Spell[${Me.Gem[${i}]}].Category.Equal[Direct Damage]} && ${Me.SpellReady[${i}]} && !${Me.SpellInCooldown}) {
                        /echo Casting ${Me.Gem[${i}]} from Gem${i}
                        /cast "${Me.Gem[${i}]}"
                        /delay 20s !${Me.Casting(bool)}
                    }
                  
                /call WeaveAAs
                :SkipSpell
                 | /delay ${NukeDelay}s
        /next i
        /varset i 0
        /if (${Target.ID} && ${Target.Type.Equal[npc]} && !${Me.PctMana}<=20) /goto :NukeCycle
    /return

    Sub TradeAccept
        :loopstart
        /if (${Window[TradeWnd].Open}) {
            /if (${Window[TradeWnd].HisTradeReady} && !${Cursor.ID}) {
                /notify TradeWnd TRDW_Trade_Button leftmouseup
            } else {
                /goto :loopstart
            }      
        }
    /return
  
    Sub WeaveAAs
        /doevents
        /if (${Me.AltAbilityReady[Force of Flame]}) {
            /echo Weaving Force of Flame
            /alt act 1266
            /delay 10s !${Me.SpellInCooldown}
            /return 1
        } else /if (${Me.AltAbilityReady[Force of Ice]}) {
            /echo Weaving Force of Ice
            /alt act 1267
            /delay 10s !${Me.SpellInCooldown}
            /return 1
        } else /if (${Me.AltAbilityReady[Force of Will]}) {
            /echo Weaving Force of Will
            /alt act 1154
            /delay 10s !${Me.SpellInCooldown}
            /return 1
        }
    /return 0

    Sub HarvestMana(hms)
        /if (${Me.AltAbilityReady[Harvest of Druzzil]}) {
            /alt act 172
            /delay 15s !${Me.Casting.ID}
        }
        /declare i int local 0
        /call FindCastSpell harvest "for Mana - "
    /return

    Sub Med
        /if (${Me.Moving} || ${Me.Casting.ID}) /return
        /if (!${Me.Mount.ID} && !${Me.Sitting}) /sit
        /echo Time to Med
        :StillMedding
            /if (${Me.PctMana}<=${HarvestAt}) /call HarvestMana
            /delay 10
        /if (${Me.PctMana}<=15) /goto :StillMedding
        /if (!${Me.Mount.ID} && ${Me.Sitting}) /stand
    /return
  
    Sub FindMount
        /if (${Zone.Indoor}) /return
        /declare i int local
        /if (${InvSlot[ammo].Item.Spell.Description.Find[mount]}) {
            /useitem ${InvSlot[ammo].Item.Name}
            /echo Clicking ${InvSlot[ammo].Item.Name}
            /delay 10s !${Me.Casting.ID}
            /return
        }
        /for i 1 to 10
            /if (${Me.Inventory[pack${i}].Container})  {
                /call CheckBagForMount ${i}
            }
        /next i
    /return
  
    Sub CheckBagForMount(int PackSlot)
        /declare i int local
        /for i 1 to ${Me.Inventory[pack${PackSlot}].Container}
            /if (${Me.Inventory[pack${PackSlot}].Item[${i}].ID}) {
                    /if (${FindItem[${Me.Inventory[pack${PackSlot}].Item[${i}].Name}].Spell.Description.Find[mount]} && ${FindItem[${Me.Inventory[pack${PackSlot}].Item[${i}].Name}].Spell.SpellType.Equal[beneficial]}) {
                        /useitem ${Me.Inventory[pack${PackSlot}].Item[${i}].Name}
                        /echo Clicking ${Me.Inventory[pack${PackSlot}].Item[${i}].Name}
                        /delay 10s !${Me.Casting.ID}
                        /return
                    }  
                }
            } 
       /next i
    /return
      
    Sub Buffs
        /if (${Me.AltAbilityReady[Kerafyrm's Prismatic Familiar]} && !${Me.Buff[Kerafyrm's Prismatic Familiar].ID} && ${Spell[Kerafyrm's Prismatic Familiar].Stacks[0]} ) /alt act 510
        /if (${Me.AltAbilityReady[Pyromancy]} && !${Me.Buff[Pyromancy].ID} && ${Spell[Pyromancy].Stacks[0]} ) /alt act 514
     /return
   
    Sub BuffsRequireMana
         /if (${Me.Moving}) /return
        /if (${Me.Casting.ID}) /return
        /if (!${Me.Buff["Shield of the Pellarus Rk. II"].ID} && ${Spell["Shield of the Pellarus Rk. II"].Stacks[0]} ) /casting "Shield of the Pellarus Rk. II" gem12
|        /if (!${Me.Buff["Armor of the Codex Rk. II"].ID} && ${Spell["Armor of the Codex Rk. II"].Stacks[0]} ) /casting "Armor of the Codex Rk. II" gem12
     /return

    Sub Event_GoMProc
        /call FindCastSpell dichotomic "Gift of Mana - "
        /doevents flush GoMProc
    /return
    
      
    Sub Event_KillShot
        |    /echo ${ChatText} - ${ChatText2}
           /if (${Target.Type.Equal[corpse]} || ${Target.Type.Equal[PC]} || ${Target.Type.Equal[Pet]} || ${Target.Type.Equal[Mercenary]}) {
            /if (${EQBC.Connected}) {
                /bc  [+w+] MasterBlaster runs ${Zone.Name}!
            } else {
                /g   [+w+] MasterBlaster runs ${Zone.Name}
            }
        }
    /return
  
    Sub Event_eqbcmissedping
      /bccmd reconnect
    /return
  
    Sub Event_Zone
       | /if (${Select[${Zone.ID},345,344,202,203,279]}) {
           /if (${EQBCAnnounce} && ${EQBC.Connected})  {
                /bc  [+w+] Blaster left Bartertown, ending macro [[+P+] ${Time.Time24}[+w+]]  
            } else {
                /echo Blaster left Bartertown, ending macro
            }
           /end
        |}
    /return
  
  
  
    Sub Event_GroupMessage(string Line,string ChatText,string ChatText2)
        /if (${Spawn[${ChatText}].Type.Equal[PC]}) {
      |/echo ${ChatText} ?${ChatText2}?
          
            /if (${ChatText2.Equal[${MoveToMeWord}]}) {
                /if (${EQBCAnnounce} && ${EQBC.Connected})  {
                    /bc  [+w+] Master [+g+]${ChatText} [+w+] called the blaster [[+P+] ${Time.Time24}[+w+]]  
                } else {
                    /echo Master ${ChatText} called the blaster
                }
                :loopMoveToMe
                    /target id ${Spawn[${ChatText} pc].ID}
                    /stick 15
                    /delay 10
                /if (${Spawn[${ChatText} pc].Distance}>=35) /goto :loopMoveToMes
            }
          
          
            /if (${ChatText2.Equal[${NavigateToMeWord}]}) {
                /if (${EQBCAnnounce} && ${EQBC.Connected})  {
                    /bc  [+w+] Master [+g+]${ChatText} [+w+] called the blaster [[+P+] ${Time.Time24}[+w+]]  
                } else {
                    /echo Master ${ChatText} called the blaster
                }
                :LooopNavToMe
                    /target id ${Spawn[${ChatText} pc].ID}
                    /nav target
                    /delay 10
                /if (${Spawn[${ChatText} pc].Distance}>=35) /goto :LooopNavToMe
            }
            |/echo ${ChatText} - ${ChatText2}
        }
    /return
Author
neophys
Downloads
3
Views
63
First release
Last update
Rating
0.00 star(s) 0 ratings
Top