• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver
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