MasterBlaster by Maskoi Shamelessly edited by Neophys

Release MasterBlaster by Maskoi Shamelessly edited by Neophys 1.0

No permission to download
Joined
Nov 23, 2006
RedCents
935¢
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
 
Release MasterBlaster by Maskoi Shamelessly edited by Neophys

Users who are viewing this thread

Back
Top
Cart