Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Guild Wars > GW Guides & Templates
You last visited: Today at 09:49

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[GWA2] ModStructs For Perfect Items

Discussion on [GWA2] ModStructs For Perfect Items within the GW Guides & Templates forum part of the Guild Wars category.

Reply
 
Old 11/14/2019, 19:27   #31
 
richpianagroyper's Avatar
 
elite*gold: 0
Join Date: Oct 2019
Posts: 11
Received Thanks: 2
oh it seems youre correct since the patch a number of modstructs had changed but i didnt bother to check os ones and just assumed that they also just changed but it seems atleast the ones i got werent affected. thanks andy!
richpianagroyper is offline  
Old 01/21/2024, 21:31   #32
 
Underavelvetmoon's Avatar
 
elite*gold: 0
Join Date: May 2011
Posts: 111
Received Thanks: 94
Been a while since I have updated these, but I noticed (after about 5 years) that there are some items I never find. This is because I was missing some specific combinations, and also the mod struct for +5^50 and +5wEnch were wrong So perfect wands were never really found since 20/20 is so unbelievably rare.

I have also added more combinations of focus to keep (+30 20% +1 20/10 etc) since on skins like Paper Lanterns and Paper Fans this can be a pretty expensive item.

Enjoy!

Edit: I actually think the 10% mods were wrong too, I have modified them, but they require further testing. Its hard to find these mods on weapons to test! I also added the high energy mods quickly, so it should save these on wands and foci. Again, if any issues, please comment!

Code:
 Func IsPerfectCaster($aItem)
	Local $ModStruct = GetModStruct($aItem)
	Local $A = GetItemAttribute($aItem)
    ; Universal mods
    Local $PlusFive = StringInStr($ModStruct, "05320823", 0, 1) ; Mod struct for +5^50
	Local $PlusFiveEnch = StringInStr($ModStruct, "0500F822", 0, 1)
	Local $EnergyAlways15 = StringInStr($ModStruct, "0F00D822", 0 ,1) ; Energy +15
	Local $EnergyRegen = StringInStr($ModStruct, "0100C820", 0 ,1) ; Energy regeneration -1
	Local $10Cast = StringInStr($ModStruct, "000A0822", 0, 1) ; Mod struct for 10% cast
	Local $10Recharge = StringInStr($ModStruct, "000AA823", 0, 1) ; Mod struct for 10% recharge
	Local $Plus30 = StringInStr($ModStruct, "1E4823", 0, 1) ; Mod struct for +30 (shield only?)
	; Plus 1 Mods
	Local $PlusIllusion = StringInStr($ModStruct, "0118240", 0, 1) ; +1 Illu 20%
	Local $PlusDomination = StringInStr($ModStruct, "0218240", 0, 1) ; +1 Dom 20%
	Local $PlusInspiration = StringInStr($ModStruct, "0318240", 0, 1) ; +1 Insp 20%
	Local $PlusBlood = StringInStr($ModStruct, "0418240", 0, 1) ; +1 Blood 20%
	Local $PlusDeath = StringInStr($ModStruct, "0518240", 0, 1) ; +1 Death 20%
	Local $PlusSoulReap = StringInStr($ModStruct, "0618240", 0, 1) ; +1 SoulR 20%
	Local $PlusCurses = StringInStr($ModStruct, "0718240", 0, 1) ; +1 Curses 20%
	Local $PlusAir = StringInStr($ModStruct, "0818240", 0, 1) ; +1 Air 20%
	Local $PlusEarth = StringInStr($ModStruct, "0918240", 0, 1) ; +1 Earth 20%
    Local $PlusFire = StringInStr($ModStruct, "0A18240", 0, 1) ; +1 Fire 20%
	Local $PlusWater = StringInStr($ModStruct, "0B18240", 0, 1) ; +1 Water 20%
	Local $PlusHealing = StringInStr($ModStruct, "0D18240", 0, 1) ; +1 Heal 20%
	Local $PlusSmite = StringInStr($ModStruct, "0E18240", 0, 1) ; +1 Smite 20%
	Local $PlusProt = StringInStr($ModStruct, "0F18240", 0, 1) ; +1 Prot 20%
	Local $PlusDivine = StringInStr($ModStruct, "1018240", 0, 1) ; +1 Divine 20%
	; Ele mods
	Local $Fire20Casting = StringInStr($ModStruct, "0A141822", 0, 1) ; Mod struct for 20% fire
	Local $Fire20Recharge = StringInStr($ModStruct, "0A149823", 0, 1)
	Local $Water20Casting = StringInStr($ModStruct, "0B141822", 0, 1) ; Mod struct for 20% water
	Local $Water20Recharge = StringInStr($ModStruct, "0B149823", 0, 1)
	Local $Air20Casting = StringInStr($ModStruct, "08141822", 0, 1) ; Mod struct for 20% air
	Local $Air20Recharge = StringInStr($ModStruct, "08149823", 0, 1)
	Local $Earth20Casting = StringInStr($ModStruct, "09141822", 0, 1)
	Local $Earth20Recharge = StringInStr($ModStruct, "09149823", 0, 1)
	Local $Energy20Casting = StringInStr($ModStruct, "0C141822", 0, 1)
	Local $Energy20Recharge = StringInStr($ModStruct, "0C149823", 0, 1)
	; Monk mods
	Local $Smiting20Casting = StringInStr($ModStruct, "0E141822", 0, 1) ; Mod struct for 20% smite
	Local $Smiting20Recharge = StringInStr($ModStruct, "0E149823", 0, 1)
	Local $Divine20Casting = StringInStr($ModStruct, "10141822", 0, 1) ; Mod struct for 20% divine
	Local $Divine20Recharge = StringInStr($ModStruct, "10149823", 0, 1)
	Local $Healing20Casting = StringInStr($ModStruct, "0D141822", 0, 1) ; Mod struct for 20% healing
	Local $Healing20Recharge = StringInStr($ModStruct, "0D149823", 0, 1)
	Local $Protection20Casting = StringInStr($ModStruct, "0F141822", 0, 1) ; Mod struct for 20% protection
	Local $Protection20Recharge = StringInStr($ModStruct, "0F149823", 0, 1)
	; Rit mods
	Local $Channeling20Casting = StringInStr($ModStruct, "22141822", 0, 1) ; Mod struct for 20% channeling
	Local $Channeling20Recharge = StringInStr($ModStruct, "22149823", 0, 1)
	Local $Restoration20Casting = StringInStr($ModStruct, "21141822", 0, 1)
	Local $Restoration20Recharge = StringInStr($ModStruct, "21149823", 0, 1)
    Local $Communing20Casting = StringInStr($ModStruct, "20141822", 0, 1)
	Local $Communing20Recharge = StringInStr($ModStruct, "20149823", 0, 1)
    Local $Spawning20Casting = StringInStr($ModStruct, "24141822", 0, 1) ; Spawning - Unconfirmed
	Local $Spawning20Recharge = StringInStr($ModStruct, "24149823", 0, 1) ; Spawning - Unconfirmed
	; Mes mods
    Local $Illusion20Recharge = StringInStr($ModStruct, "01149823", 0, 1)
	Local $Illusion20Casting = StringInStr($ModStruct, "01141822", 0, 1)
	Local $Domination20Casting = StringInStr($ModStruct, "02141822", 0, 1) ; Mod struct for 20% domination
    Local $Domination20Recharge = StringInStr($ModStruct, "02149823", 0, 1) ; Mod struct for 20% domination recharge
    Local $Inspiration20Recharge = StringInStr($ModStruct, "03149823", 0, 1)
	Local $Inspiration20Casting = StringInStr($ModStruct, "03141822", 0, 1)
	; Necro mods
    Local $Death20Casting = StringInStr($ModStruct, "05141822", 0, 1) ; Mod struct for 20% death
	Local $Death20Recharge = StringInStr($ModStruct, "05149823", 0, 1)
    Local $Blood20Recharge = StringInStr($ModStruct, "04149823", 0, 1)
	Local $Blood20Casting = StringInStr($ModStruct, "04141822", 0, 1)
    Local $SoulReap20Recharge = StringInStr($ModStruct, "06149823", 0, 1)
	Local $SoulReap20Casting = StringInStr($ModStruct, "06141822", 0, 1)
    Local $Curses20Recharge = StringInStr($ModStruct, "07149823", 0, 1)
	Local $Curses20Casting = StringInStr($ModStruct, "07141822", 0, 1)

	Switch $A
    Case 1 ; Illusion
	   If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
		  If $Illusion20Casting > 0 Or $Illusion20Recharge > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Illusion20Recharge > 0 Or $Illusion20Casting > 0 Then
		  If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
		     Return True
		  EndIf
	   EndIf
	   If $Illusion20Recharge > 0 Then
		  If $Illusion20Casting > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Plus30 > 0 Then
		   If $Illusion20Casting > 0 Or $Illusion20Recharge > 0 Or $PlusIllusion > 0 Or $10Recharge > 0 Then
			   Return True
		   EndIf
	   EndIf
	   Return False
    Case 2 ; Domination
	   If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
		  If $Domination20Casting > 0 Or $Domination20Recharge > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Domination20Recharge > 0 Or $Domination20Casting > 0 Then
		  If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
		     Return True
		  EndIf
	   EndIf
	   If $Domination20Recharge > 0 Then
		  If $Domination20Casting > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Plus30 > 0 Then
		   If $Domination20Casting > 0 Or $Domination20Recharge > 0 Or $PlusDomination > 0 Or $10Recharge > 0 Then
			   Return True
		   EndIf
	   EndIf
	   Return False
    Case 3 ; Inspiration
	   If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
		  If $Inspiration20Casting > 0 Or $Inspiration20Recharge > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Inspiration20Recharge > 0 Or $Inspiration20Casting > 0 Then
		  If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
		     Return True
		  EndIf
	   EndIf
	   If $Inspiration20Recharge > 0 Then
		  If $Inspiration20Casting > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Plus30 > 0 Then
		   If $Inspiration20Casting > 0 Or $Inspiration20Recharge > 0 Or $PlusInspiration > 0 Or $10Recharge > 0 Then
			   Return True
		   EndIf
	   EndIf
	   Return False
    Case 4 ; Blood
	   If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
		  If $Blood20Casting > 0 Or $Blood20Recharge > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Blood20Recharge > 0 Or $Blood20Casting > 0 Then
		  If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
		     Return True
		  EndIf
	   EndIf
	   If $Blood20Recharge > 0 Then
		  If $Blood20Casting > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Plus30 > 0 Then
		   If $Blood20Casting > 0 Or $Blood20Recharge > 0 Or $PlusBlood > 0 Or $10Recharge > 0 Then
			   Return True
		   EndIf
	   EndIf
	   Return False
    Case 5 ; Death
	   If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
		  If $Death20Casting > 0 Or $Death20Recharge > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Death20Recharge > 0 Or $Death20Casting > 0 Then
		  If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
		     Return True
		  EndIf
	   EndIf
	   If $Death20Recharge > 0 Then
		  If $Death20Casting > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Plus30 > 0 Then
		   If $Death20Casting > 0 Or $Death20Recharge > 0 Or $PlusDeath > 0 Or $10Recharge > 0 Then
			   Return True
		   EndIf
	   EndIf
	   Return False
    Case 6 ; SoulReap - Doesnt drop?
	   If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
		  If $SoulReap20Casting > 0 Or $SoulReap20Recharge > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $SoulReap20Recharge > 0 Or $SoulReap20Casting > 0 Then
		  If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
		     Return True
		  EndIf
	   EndIf
	   If $SoulReap20Recharge > 0 Then
		  If $SoulReap20Casting > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Plus30 > 0 Then
		   If $SoulReap20Casting > 0 Or $SoulReap20Recharge > 0 Or $PlusSoulReap > 0 Or $10Recharge > 0 Then
			   Return True
		   EndIf
	   EndIf
	   If ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
		   If $Blood20Casting > 0 Or $Blood20Recharge > 0 Or $Death20Casting > 0 Or $Death20Recharge > 0 Or $Curses20Casting > 0 Or $Curses20Recharge > 0 Or $SoulReap20Casting > 0 Or $SoulReap20Recharge > 0 Then
			   Return True
		   EndIf
	   EndIf
	   Return False
    Case 7 ; Curses
	   If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
		  If $Curses20Casting > 0 Or $Curses20Recharge > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Curses20Recharge > 0 Or $Curses20Casting > 0 Then
		  If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
		     Return True
		  EndIf
	   EndIf
	   If $Curses20Recharge > 0 Then
		  If $Curses20Casting > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Plus30 > 0 Then
		   If $Curses20Casting > 0 Or $Curses20Recharge > 0 Or $PlusCurses > 0 Or $10Recharge > 0 Then
			   Return True
		   EndIf
	   EndIf
	   Return False
    Case 8 ; Air
	   If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
		  If $Air20Casting > 0 Or $Air20Recharge > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Air20Recharge > 0 Or $Air20Casting > 0 Then
		  If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
		     Return True
		  EndIf
	   EndIf
	   If $Air20Recharge > 0 Then
		  If $Air20Casting > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Plus30 > 0 Then
		   If $Air20Casting > 0 Or $Air20Recharge > 0 Or $PlusAir > 0 Or $10Recharge > 0 Then
			   Return True
		   EndIf
	   EndIf
	   Return False
    Case 9 ; Earth
	   If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
		  If $Earth20Casting > 0 Or $Earth20Recharge > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Earth20Recharge > 0 Or $Earth20Casting > 0 Then
		  If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
		     Return True
		  EndIf
	   EndIf
	   If $Earth20Recharge > 0 Then
		  If $Earth20Casting > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Plus30 > 0 Then
		   If $Earth20Casting > 0 Or $Earth20Recharge > 0 Or $PlusEarth > 0 Or $10Recharge > 0 Then
			   Return True
		   EndIf
	   EndIf
       Return False
    Case 10 ; Fire
	   If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
		  If $Fire20Casting > 0 Or $Fire20Recharge > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Fire20Recharge > 0 Or $Fire20Casting > 0 Then
		  If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
		     Return True
		  EndIf
	   EndIf
	   If $Fire20Recharge > 0 Then
		  If $Fire20Casting > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Plus30 > 0 Then
		   If $Fire20Casting > 0 Or $Fire20Recharge > 0 Or $PlusFire > 0 Or $10Recharge > 0 Then
			   Return True
		   EndIf
	   EndIf
       Return False
    Case 11 ; Water
	   If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
		  If $Water20Casting > 0 Or $Water20Recharge > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Water20Recharge > 0 Or $Water20Casting > 0 Then
		  If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
		     Return True
		  EndIf
	   EndIf
	   If $Water20Recharge > 0 Then
		  If $Water20Casting > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Plus30 > 0 Then
		   If $Water20Casting > 0 Or $Water20Recharge > 0 Or $PlusWater > 0 Or $10Recharge > 0 Then
			   Return True
		   EndIf
	   EndIf
	   Return False
    Case 12 ; Energy Storage
	   If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
		  If $Energy20Casting > 0 Or $Energy20Recharge > 0 Or $Water20Casting > 0 Or $Water20Recharge > 0 Or $Fire20Casting > 0 Or $Fire20Recharge > 0 Or $Earth20Casting > 0 Or $Earth20Recharge > 0 Or $Air20Casting > 0 Or $Air20Recharge > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Energy20Recharge > 0 Or $Energy20Casting > 0 Then
		  If $10Cast > 0 Or $10Recharge > 0 Or $Water20Casting > 0 Or $Water20Recharge > 0 Or $Fire20Casting > 0 Or $Fire20Recharge > 0 Or $Earth20Casting > 0 Or $Earth20Recharge > 0 Or $Air20Casting > 0 Or $Air20Recharge > 0 Then
		     Return True
		  EndIf
       EndIf
	   If $Energy20Recharge > 0 Then
		  If $Energy20Casting > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $10Cast > 0 Or $10Recharge > 0 Then
		  If $Water20Casting > 0 Or $Water20Recharge > 0 Or $Fire20Casting > 0 Or $Fire20Recharge > 0 Or $Earth20Casting > 0 Or $Earth20Recharge > 0 Or $Air20Casting > 0 Or $Air20Recharge > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Plus30 > 0 Then
		   If $Water20Casting > 0 Or $Water20Recharge > 0 Or $Fire20Casting > 0 Or $Fire20Recharge > 0 Or $Earth20Casting > 0 Or $Earth20Recharge > 0 Or $Air20Casting > 0 Or $Air20Recharge > 0 Or $10Recharge > 0 Then
			   Return True
		   EndIf
	   EndIf
	   If ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
			If $Water20Casting > 0 Or $Water20Recharge > 0 Or $Fire20Casting > 0 Or $Fire20Recharge > 0 Or $Earth20Casting > 0 Or $Earth20Recharge > 0 Or $Air20Casting > 0 Or $Air20Recharge > 0 Or $10Recharge > 0 Then
				Return True
			EndIf
	   EndIf
	   Return False
    Case 13 ; Healing
	   If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
		  If $Healing20Casting > 0 Or $Healing20Recharge > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Healing20Recharge > 0 Or $Healing20Casting > 0 Then
		  If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
		     Return True
		  EndIf
	   EndIf
	   If $Healing20Recharge > 0 Then
		  If $Healing20Casting > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Plus30 > 0 Then
		   If $Healing20Casting > 0 Or $Healing20Recharge > 0 Or $PlusHealing > 0 Or $10Recharge > 0 Then
			   Return True
		   EndIf
	   EndIf
	   Return False
    Case 14 ; Smiting
	   If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
		  If $Smiting20Casting > 0 Or $Smiting20Recharge > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Smiting20Recharge > 0 Or $Smiting20Casting > 0 Then
		  If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
		     Return True
		  EndIf
	   EndIf
	   If $Smiting20Recharge > 0 Then
		  If $Smiting20Casting > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Plus30 > 0 Then
		   If $Smiting20Casting > 0 Or $Smiting20Recharge > 0 Or $PlusSmite > 0 Or $10Recharge > 0 Then
			   Return True
		   EndIf
	   EndIf
	   Return False
    Case 15 ; Protection
	   If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
		  If $Protection20Casting > 0 Or $Protection20Recharge > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Protection20Recharge > 0 Or $Protection20Casting > 0 Then
		  If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
		     Return True
		  EndIf
	   EndIf
	   If $Protection20Recharge > 0 Then
		  If $Protection20Casting > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Plus30 > 0 Then
		   If $Protection20Casting > 0 Or $Protection20Recharge > 0 Or $PlusProt > 0 Or $10Recharge > 0 Then
			   Return True
		   EndIf
	   EndIf
	   Return False
    Case 16 ; Divine
	   If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
		  If $Divine20Casting > 0 Or $Divine20Recharge > 0 Or $Healing20Casting > 0 Or $Healing20Recharge > 0 Or $Smiting20Casting > 0 Or $Smiting20Recharge > 0 Or $Protection20Casting > 0 Or $Protection20Recharge > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Divine20Recharge > 0 Or $Divine20Casting > 0 Then
		  If $10Cast > 0 Or $10Recharge > 0 Or $Healing20Casting > 0 Or $Healing20Recharge > 0 Or $Smiting20Casting > 0 Or $Smiting20Recharge > 0 Or $Protection20Casting > 0 Or $Protection20Recharge > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Divine20Recharge > 0 Then
		  If $Divine20Casting > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $10Cast > 0 Or $10Recharge > 0 Then
		  If $Healing20Casting > 0 Or $Healing20Recharge > 0 Or $Smiting20Casting > 0 Or $Smiting20Recharge > 0 Or $Protection20Casting > 0 Or $Protection20Recharge > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Plus30 > 0 Then
		   If $Healing20Casting > 0 Or $Healing20Recharge > 0 Or $Smiting20Casting > 0 Or $Smiting20Recharge > 0 Or $Protection20Casting > 0 Or $Protection20Recharge > 0 Then
			   Return True
		   EndIf
	   EndIf
	   If ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
		   If $Healing20Casting > 0 Or $Healing20Recharge > 0 Or $Smiting20Casting > 0 Or $Smiting20Recharge > 0 Or $Protection20Casting > 0 Or $Protection20Recharge > 0 Then
				Return True
		   EndIf
	   EndIf
	   Return False
    Case 32 ; Communing
	   If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
		  If $Communing20Casting > 0 Or $Communing20Recharge > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Communing20Recharge > 0 Or $Communing20Casting > 0 Then
		  If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
		     Return True
		  EndIf
	   EndIf
	   If $Communing20Recharge > 0 Then
		  If $Communing20Casting > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Plus30 > 0 Then
		   If $Communing20Casting > 0 Or $Communing20Recharge > 0 Or $10Recharge > 0 Then
			   Return True
		   EndIf
	   EndIf
	   Return False
	Case 33 ; Restoration
	   If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
		  If $Restoration20Casting > 0 Or $Restoration20Recharge > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Restoration20Recharge > 0 Or $Restoration20Casting > 0 Then
		  If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
		     Return True
		  EndIf
	   EndIf
	   If $Restoration20Recharge > 0 Then
		  If $Restoration20Casting > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Plus30 > 0 Then
		   If $Restoration20Casting > 0 Or $Restoration20Recharge > 0 Or $10Recharge > 0 Then
			   Return True
		   EndIf
	   EndIf
	   Return False
    Case 34 ; Channeling
	   If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
		  If $Channeling20Casting > 0 Or $Channeling20Recharge > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Channeling20Recharge > 0 Or $Channeling20Casting > 0 Then
		  If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
		     Return True
		  EndIf
	   EndIf
	   If $Channeling20Recharge > 0 Then
		  If $Channeling20Casting > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Plus30 > 0 Then
		   If $Channeling20Casting > 0 Or $Channeling20Recharge > 0 Or $10Recharge > 0 Then
			   Return True
		   EndIf
	   EndIf
	   Return False
    Case 36 ; Spawning - Unconfirmed
	   If $PlusFive > 0 Or $PlusFiveEnch > 0 Then
		  If $Spawning20Casting > 0 Or $Spawning20Recharge > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Spawning20Recharge > 0 Or $Spawning20Casting > 0 Then
		  If $10Cast > 0 Or $10Recharge > 0 Or ($EnergyAlways15 > 0 And $EnergyRegen > 0) Then
		     Return True
		  EndIf
	   EndIf
	   If $Spawning20Recharge > 0 Then
		  If $Spawning20Casting > 0 Then
		     Return True
		  EndIf
	   EndIf
	   If $Plus30 > 0 Then
		   If $Spawning20Casting > 0 Or $Spawning20Recharge > 0 Or $10Recharge > 0 Then
			   Return True
		   EndIf
	   EndIf
	   Return False
    EndSwitch
    Return False
 EndFunc
Underavelvetmoon is offline  
Thanks
4 Users
Old 02/28/2024, 21:39   #33
 
elite*gold: 0
Join Date: Feb 2024
Posts: 19
Received Thanks: 3
Hello! Much appreciation for all the work done here.

I have recently dug into gwa2. If an item drops, I have found that there are functions which return that item's ModelID, Rarity, and Requirement. However I was wondering if there's anyway to return the damage/armor numbers on the item (before picking it up). For example if I want to only pickup max damage swords and not anything less (i.e. 11-21). Is this information stored in the modstruct somewhere?
albino albatross is offline  
Old 02/29/2024, 17:39   #34
 
Underavelvetmoon's Avatar
 
elite*gold: 0
Join Date: May 2011
Posts: 111
Received Thanks: 94
Quote:
Originally Posted by albino albatross View Post
Hello! Much appreciation for all the work done here.

I have recently dug into gwa2. If an item drops, I have found that there are functions which return that item's ModelID, Rarity, and Requirement. However I was wondering if there's anyway to return the damage/armor numbers on the item (before picking it up). For example if I want to only pickup max damage swords and not anything less (i.e. 11-21). Is this information stored in the modstruct somewhere?
You could "probably" do this using item type and GetItemMaxDmg.

Code:
Func IsItemMaxDmgSword($aItem)
Local $dStruct = DllStructGetData($aItem, 'Type')
Local $tSword = 27
Local $fDmg = GetItemMaxDmg($aItem)

If $dStruct == $tSword And $fDmg == 22 Then
    Return True ; Max dmg sword
Else
    Return False
EndIf

EndFunc
I havent tested this myself, but I dont see any reason why it wouldnt work.
Underavelvetmoon is offline  
Old 02/29/2024, 23:11   #35
 
elite*gold: 0
Join Date: Feb 2024
Posts: 19
Received Thanks: 3
Thank you GetItemMaxDmg worked!

If anyone is interested, I modified the function to return the entire damage range.


This successfully returns the minimum and maximum damage number for the item.
It returns 8-16 for max shields and 6-12 for max off-hands since these are the minimum values for these items.
albino albatross is offline  
Thanks
1 User
Old 03/26/2024, 11:18   #36
 
elite*gold: 0
Join Date: Feb 2024
Posts: 19
Received Thanks: 3
Need Help To Count Item Mods

Hello everyone! I am once again in need of your assistance.

I have been looking at the perfect modstructs Underavelvetmoon has so graciously provided. They are very useful, but I was wondering if there was a way to detect the number of mods an item has, regardless of what those mods are?

I want to use this to note the number of items I get with dual mods vs single mods, and a function which counts the number of mods on an item would be very useful.

This is what I came up with so far:

Code:
Func CountMods($aItem)
    Local $ModStruct = GetModStruct($aItem)
    Local $modCount = 0

    ; List of unique mod patterns identified from the perfect item checker.  
    Local $modPatterns = ["05320823", "0500F822", "0F00D822", "0100C820", "000A0822", "000AA823", "1E4823", "0118240", "0218240", "0318240", "0418240", "0518240", "0618240", "0718240", "0818240", "0918240", "0A18240", "0B18240", "0D18240", "0E18240", "0F18240", "1018240", "0A141822", "0A149823", "0B141822", "0B149823", "08141822", "08149823", "09141822", "09149823"]

    ; Iterate through each mod pattern and check if it exists in the ModStruct.
    For $i = 0 To UBound($modPatterns) - 1
        If StringInStr($ModStruct, $modPatterns[$i]) Then
            $modCount += 1
        EndIf
    Next

    Return $modCount
EndFunc
I think this should work for detecting the presence of the perfect mods, but is there any easy way to modify this for detecting the presence of ALL mods, short of adding every single individual mod pattern to the list?
albino albatross is offline  
Old 03/27/2024, 12:25   #37

 
jukia's Avatar
 
elite*gold: 0
Join Date: Jul 2016
Posts: 19
Received Thanks: 29
You could check only for the identifiers of the mods that interests you, the last 4 digits.

For instance, hp+30 will be 001E4823, identifier 4823 for this mod.

So, this will give you a match if any hp+xx is present
Code:
StringRegExp($ModStruct, '.{4}4823')
Basically the same as you have but your $modPaterns would look more like this.
Code:
Local $modPatterns = ["C820", "0822", "1822", "D822", "F822", "0823", "4823", "9823", "A823", "8240",
And your test loop
Code:
For $i = 0 To UBound($modPatterns) - 1
    If StringRegExp($ModStruct, '.{4}' & $modPatterns[$i]) Then
        $modCount += 1
        If $modCount = 2 Then ExitLoop ; I guess you can stop the iteration if it gets to 2 mods already
    EndIf
Next
jukia is offline  
Thanks
2 Users
Old 03/27/2024, 16:24   #38
 
Underavelvetmoon's Avatar
 
elite*gold: 0
Join Date: May 2011
Posts: 111
Received Thanks: 94
Quote:
Originally Posted by jukia View Post
You could check only for the identifiers of the mods that interests you, the last 4 digits.

For instance, hp+30 will be 001E4823, identifier 4823 for this mod.

So, this will give you a match if any hp+xx is present
Code:
StringRegExp($ModStruct, '.{4}4823')
Basically the same as you have but your $modPaterns would look more like this.
Code:
Local $modPatterns = ["C820", "0822", "1822", "D822", "F822", "0823", "4823", "9823", "A823", "8240",
And your test loop
Code:
For $i = 0 To UBound($modPatterns) - 1
    If StringRegExp($ModStruct, '.{4}' & $modPatterns[$i]) Then
        $modCount += 1
        If $modCount = 2 Then ExitLoop ; I guess you can stop the iteration if it gets to 2 mods already
    EndIf
Next
I like that quite a bit, the only problem, and this is the problem I had with other methods of doing this is that we want to exclude undesirable combos of mods, like -2 stance and +45while enchanted, and so on, so eventually it will come back to needing to have the mess of the code that it already is to specify the mods haha

Maybe there is someway to integrate what you suggested half way and reduce the clutter, I'll give it some thought!
Underavelvetmoon is offline  
Thanks
1 User
Old 03/31/2024, 03:55   #39
 
elite*gold: 0
Join Date: Feb 2024
Posts: 19
Received Thanks: 3
Thank you jukia, your method worked great. I'll post what I have working so far. This function returns the number of mods of the item in the first slot of your first bag. I have noted the mod associated with each mod pattern in the comments.

Code:
Func CountMods()
    Local $modCount = 0 ; Initialize mod counter
    Local $aItem = GetItemBySlot(1, 1) ; Get item in slot 1 of bag 1.
    Local $ModStruct = GetModStruct($aItem) ; Get mod structure string of item

    ; Array of mod identifier endings to check
    Local $modPatterns = ["A820","9820","8820","7820","6823","8823","7823","4823","1824","1821","4821","7824","0822","A823","1822","9823","A821","B821","9821","8821","0821","C821","5821","2821","0823","1823","2823","D822","F822"]
    ;A820:-DMG(ST) || 9820:-DMG(Hexed) || 8820:-DMG(EN) || 7820:-DMG(%) || 6823:+HP(EN) || 8823:+HP(ST) || 7823:+HP(HEX) || 4823:+HP || 1824:+1Attribute(%) || 1821:+AR Vs DamageType || 4821:+AR Vs EnemyType || 7824:Reduces X Duration 20% || 
    ;0822:HCT All Spells || A823:HSR All Spells || 1822:HCT Attribute || 9823:HSR Attribute || 
    ;A821:+AR(>50%HP) || B821:+AR(<50%HP) || 9821:+AR(EN) || 8821:+AR(Casting)  ||C821:+AR(Hexed) || 5821:+AR(vsPhysical) || 2821:+AR(vsElemental) || 0821:[+AR/+AR(-EnergyRegen)]
    ;0823:+Energy(>50%HP) || 1823:+Energy(<50%HP) || 2823:+Energy(Hexed) || F822:+Energy(EN) || D822:[+Energy/+Energy(-EnergyRegen)]

    ; Loop through each pattern and search in ModStruct
    For $i = 0 To UBound($modPatterns) - 1
        ; Regex checks 4 any chars followed by mod identifier
        If StringRegExp($ModStruct, '.{4}' & $modPatterns[$i]) Then 
            $modCount += 1 ; Increment counter for each match
        EndIf
    Next
    MsgBox(0, "Mod Count", "The number of mods counted: " & $modCount)
    Return $modCount ; Return the total mod count found
EndFunc   ;==>CountMods
So far, I believe this function works for all shields, off-hands, and wands. I will add more mod patterns later for martial weapons and staves.
albino albatross is offline  
Old 05/11/2024, 07:30   #40
 
elite*gold: 0
Join Date: Feb 2024
Posts: 66
Received Thanks: 13
Thanks for this, amazing!

How can I do the same but for Q4 shields?

Func GetItemMaxReq4($aItem)
Local $Type = DllStructGetData($aItem, "Type")
Local $Dmg = GetItemMaxDmg($aItem)
Local $Req = GetItemReq($aItem)

Switch $Type
Case 24 ;~ Shield
If $Dmg == 8 And $Req == 4 Then
Return True
Else
Return False
EndIf
EndSwitch
EndFunc

Made this for a feather farmer but I'm unsure about how to apply it.
ATbs is offline  
Old 05/11/2024, 20:51   #41
 
Underavelvetmoon's Avatar
 
elite*gold: 0
Join Date: May 2011
Posts: 111
Received Thanks: 94
Quote:
Originally Posted by ATbs View Post
Thanks for this, amazing!

How can I do the same but for Q4 shields?

Func GetItemMaxReq4($aItem)
Local $Type = DllStructGetData($aItem, "Type")
Local $Dmg = GetItemMaxDmg($aItem)
Local $Req = GetItemReq($aItem)

Switch $Type
Case 24 ;~ Shield
If $Dmg == 8 And $Req == 4 Then
Return True
Else
Return False
EndIf
EndSwitch
EndFunc

Made this for a feather farmer but I'm unsure about how to apply it.
If you add that into the CanPickUp/CanSell/etc functions it should work fine!

Code:
Func CanPickUp($aItem)
Local $Req4Shield = GetItemMaxReq4($aItem)
Local $Type = DllStructGetData($aItem, "Type")

Switch $Type
Case 24
    If $Req4Shield Then 
         Return True 
    Else
         Return False
    EndIf
   
EndSwitch
I combine all mine into one function, like all Req8 things are checked together rather than req8 sword, shield, staff, etc, so it looks more complex than it is.
Underavelvetmoon is offline  
Old 05/11/2024, 23:47   #42
 
elite*gold: 0
Join Date: Feb 2024
Posts: 66
Received Thanks: 13
Thx a lot, to test i can change values and use whatever shield yes.
I don't want to skip all golds in case a q4 max ar shield drops!
ATbs is offline  
Old 05/31/2024, 08:20   #43
 
elite*gold: 0
Join Date: Feb 2024
Posts: 66
Received Thanks: 13
So i'm making a test on a feather bot i have, and is not working. Maybe u can help me figure out why.
( i have a q0 max11 dmg spear im testing with)

If CountFreeSlots() >= 3 Then
Local $Rarity = GetRarity($lItem)
Local $aReq = GetItemReq($lItem)
Local $lType = DllStructGetData($lItem, 'Type')
Local $IsReq0 = IsReq0Max($lItem)
Switch $Rarity
Case 2624
Switch $lType
Case 24
If $aReq = 4 And GetItemMaxDmg($lItem) = 12 Then
$Shields += DllStructGetData($lItem, 'Quantity')
GUICtrlSetData($ShieldsCount, $Shields)
Out("Q4 AR12 GOLD SHIELD looted.")
Return True
EndIf
If $aReq = 5 And GetItemMaxDmg($lItem) = 13 Then
$Shields += DllStructGetData($lItem, 'Quantity')
GUICtrlSetData($ShieldsCount, $Shields)
Out("Q5 AR13 GOLD SHIELD looted.")
Return True
EndIf
EndSwitch
Case 2623
Switch $lType
Case 36
Switch $IsReq0
Return True
EndSwitch
EndSwitch
EndSwitch
Else

Thats on the pickup func, these are shields and it works fine, with the spear it doesnt.

Then i have:

Func GetItemMaxReq0($aItem)
Local $Type = DllStructGetData($aItem, "Type")
Local $Dmg = GetItemMaxDmg($aItem)
Local $Req = GetItemReq($aItem)

Switch $Type
Case 35 ;~ Scythe
If $Dmg == 17 And $Req == 0 Then
Return True
Else
Return False
EndIf
Case 36 ;~ Spear
If $Dmg == 11 And $Req == 0 Then
Return True
Else
Return False
EndIf
EndSwitch
EndFunc

Func IsReq0Max($aItem)
Local $Type = DllStructGetData($aItem, "Type")
Local $Rarity = GetRarity($aItem)
Local $MaxDmgScythe = GetItemMaxReq0($aItem)
Local $MaxDmgSpear = GetItemMaxReq0($aItem)

Switch $Rarity
Case 2623 ;~ Purple?
Switch $Type
Case 35 ;~ Scythe
If $MaxDmgScythe = True Then
Return True
Else
Return False
EndIf
Case 36 ;-Spear
If $MaxDmgSpear = True Then
Return True
Else
Return False
EndIf
EndSwitch
EndSwitch
Return False
EndFunc

Func GetItemMaxDmg($aItem)
If Not IsDllStruct($aItem) Then $aItem = GetItemByItemID($aItem)
Local $lModString = GetModStruct($aItem)
Local $lPos = StringInStr($lModString, "A8A7") ; Weapon Damage
If $lPos = 0 Then $lPos = StringInStr($lModString, "C867") ; Energy (focus)
If $lPos = 0 Then $lPos = StringInStr($lModString, "B8A7") ; Armor (shield)
If $lPos = 0 Then Return 0
Return Int("0x" & StringMid($lModString, $lPos - 2, 2))
EndFunc
ATbs is offline  
Old 04/02/2025, 22:06   #44
 
elite*gold: 0
Join Date: Feb 2024
Posts: 66
Received Thanks: 13
I don't see why this isn't working...


Func ShieldsIntoChest()
Local $lItem, $lType
Local $IsShield = IsPerfectShield($lItem)

For $i = 1 To 4
For $j = 1 To DllStructGetData(GetBag($i), 'slots')
$lItem = GetItemBySlot($i, $j)
If DllStructGetData($lItem, 'ID') = 0 Then ContinueLoop
If DllStructGetData($lItem, 'Type') == 24 Then
Switch $IsShield
Case True
MoveItemsToChest($lItem)
Out("Shield Stored.")
Sleep(GetPing() + 500)
EndSwitch
EndIf
Next
Next
EndFunc
ATbs is offline  
Old 04/17/2025, 13:36   #45
 
Underavelvetmoon's Avatar
 
elite*gold: 0
Join Date: May 2011
Posts: 111
Received Thanks: 94
Here's my functions for finding and keeping the new +5 mods. The mods are correct but the functions are not fully tested just yet.

Add this to your CanSell function:
Code:
Func CanSell($aItem) 
Local $PlusFiveMod = IsPlusFiveMod($aItem)

   Switch $PlusFiveMod
   Case True
	  If PlusFiveModFilter($aItem) = "1" Then
		  KeepStrengthWeapons($aItem)
	  ElseIf PlusFiveModFilter($aItem) = "2" Then
		  KeepExpertiseWeapons($aItem)
	  ElseIf PlusFiveModFilter($aItem) = "3" Then
		  KeepSoulReapingWeapons($aItem)
	  ElseIf PlusFiveModFilter($aItem) = "4" Then
		  KeepFastCastingWeapons($aItem)
	  ElseIf PlusFiveModFilter($aItem) = "5" Then
		  KeepEnergyStorageWeapons($aItem)
	  ElseIf PlusFiveModFilter($aItem) = "6" Then
		  KeepDivineFavorWeapons($aItem)
	  ElseIf PlusFiveModFilter($aItem) = "7" Then
		  KeepSpawningPowerWeapons($aItem)
	  ElseIf PlusFiveModFilter($aItem) = "8" Then
		  KeepCritStrikeWeapons($aItem)
	  ElseIf PlusFiveModFilter($aItem) = "9" Then
		  KeepLeadershipWeapons($aItem)
	  ElseIf PlusFiveModFilter($aItem) = "10" Then
		  KeepMysticismWeapons($aItem)
	  Else
		  Return True
	  EndIf
   EndSwitch
EndFunc
And put this garbled mess into wherever you keep your item filtering:
Code:
Func IsPlusFiveMod($aItem)
	Local $ModStruct = GetModStruct($aItem)
	Local $Strength = StringInStr($ModStruct, "0511A828", 0, 1)
    Local $Expertise = StringInStr($ModStruct, "0517A828", 0, 1)
    Local $SoulReaping = StringInStr($ModStruct, "0506A828", 0, 1)
    Local $FastCasting = StringInStr($ModStruct, "0500A828", 0, 1)
    Local $EnergyStorage = StringInStr($ModStruct, "050CA828", 0, 1)
    Local $DivineFavor = StringInStr($ModStruct, "0510A828", 0, 1)
    Local $SpawningPower = StringInStr($ModStruct, "0524A828", 0, 1)
    Local $CritStrikes = StringInStr($ModStruct, "0523A828", 0, 1)
    Local $Leadership = StringInStr($ModStruct, "0528A828", 0, 1)
    Local $Mysticism = StringInStr($ModStruct, "052CA828", 0, 1)

	If $Strength > 0 Then
		Return True
	EndIf
	If $Expertise > 0 Then
		Return True
	EndIf
	If $SoulReaping > 0 Then
		Return True
	EndIf
	If $FastCasting > 0 Then
		Return True
	EndIf
	If $EnergyStorage > 0 Then
		Return True
	EndIf
	If $DivineFavor > 0 Then
		Return True
	EndIf
	If $SpawningPower > 0 Then
		Return True
	EndIf
	If $CritStrikes > 0 Then
		Return True
	EndIf
	If $Leadership > 0 Then
		Return True
	EndIf
	If $Mysticism > 0 Then
		Return True
	EndIf
	Return False
EndFunc
Func PlusFiveModFilter($aItem)
	Local $ModStruct = GetModStruct($aItem)
	Local $Strength = StringInStr($ModStruct, "0511A828", 0, 1)
    Local $Expertise = StringInStr($ModStruct, "0517A828", 0, 1)
    Local $SoulReaping = StringInStr($ModStruct, "0506A828", 0, 1)
    Local $FastCasting = StringInStr($ModStruct, "0500A828", 0, 1)
    Local $EnergyStorage = StringInStr($ModStruct, "050CA828", 0, 1)
    Local $DivineFavor = StringInStr($ModStruct, "0510A828", 0, 1)
    Local $SpawningPower = StringInStr($ModStruct, "0524A828", 0, 1)
    Local $CritStrikes = StringInStr($ModStruct, "0523A828", 0, 1)
    Local $Leadership = StringInStr($ModStruct, "0528A828", 0, 1)
    Local $Mysticism = StringInStr($ModStruct, "052CA828", 0, 1)

	If $Strength > 0 Then
		Return "1"
	EndIf
	If $Expertise > 0 Then
		Return "2"
	EndIf
	If $SoulReaping > 0 Then
		Return "3"
	EndIf
	If $FastCasting > 0 Then
		Return "4"
	EndIf
	If $EnergyStorage > 0 Then
		Return "5"
	EndIf
	If $DivineFavor > 0 Then
		Return "6"
	EndIf
	If $SpawningPower > 0 Then
		Return "7"
	EndIf
	If $CritStrikes > 0 Then
		Return "8"
	EndIf
	If $Leadership > 0 Then
		Return "9"
	EndIf
	If $Mysticism > 0 Then
		Return "10"
	EndIf
	Return False
EndFunc
Func KeepStrengthWeapons($aItem)
	Local $lWeaponType = GetItemType($aItem)

	Switch $lWeaponType
	Case 2 ; Axe
		Return False
	Case 5 ; Bow
		Return False
	Case 15 ; Hammer
		Return False
	Case 22 ; Wand
		Return False
	Case 26 ; Staff
		Return False
	Case 27 ; Sword
		Return False
	Case 32 ; Daggers
		Return False
	Case 35 ; Scythe
		Return False
	Case 36 ; Spear
		Return True
	EndSwitch
	Return False
EndFunc
Func KeepExpertiseWeapons($aItem)
	Local $lWeaponType = GetItemType($aItem)

	Switch $lWeaponType
	Case 2 ; Axe
		Return True
	Case 5 ; Bow
		Return False
	Case 15 ; Hammer
		Return True
	Case 22 ; Wand
		Return False
	Case 26 ; Staff
		Return True
	Case 27 ; Sword
		Return True
	Case 32 ; Daggers
		Return False
	Case 35 ; Scythe
		Return False
	Case 36 ; Spear
		Return True
	EndSwitch
	Return False
EndFunc
Func KeepSoulReapingWeapons($aItem)
	Local $lWeaponType = GetItemType($aItem)

	Switch $lWeaponType
	Case 2 ; Axe
		Return True
	Case 5 ; Bow
		Return False
	Case 15 ; Hammer
		Return False
	Case 22 ; Wand
		Return True
	Case 26 ; Staff
		Return True
	Case 27 ; Sword
		Return True
	Case 32 ; Daggers
		Return False
	Case 35 ; Scythe
		Return True
	Case 36 ; Spear
		Return True
	EndSwitch
	Return False
EndFunc
Func KeepFastCastingWeapons($aItem)
	Local $lWeaponType = GetItemType($aItem)

	Switch $lWeaponType
	Case 2 ; Axe
		Return True
	Case 5 ; Bow
		Return False
	Case 15 ; Hammer
		Return False
	Case 22 ; Wand
		Return True
	Case 26 ; Staff
		Return True
	Case 27 ; Sword
		Return True
	Case 32 ; Daggers
		Return True
	Case 35 ; Scythe
		Return True
	Case 36 ; Spear
		Return True
	EndSwitch
	Return False
EndFunc
Func KeepEnergyStorageWeapons($aItem)
	Local $lWeaponType = GetItemType($aItem)

	Switch $lWeaponType
	Case 2 ; Axe
		Return True
	Case 5 ; Bow
		Return False
	Case 15 ; Hammer
		Return False
	Case 22 ; Wand
		Return False
	Case 26 ; Staff
		Return True
	Case 27 ; Sword
		Return True
	Case 32 ; Daggers
		Return False
	Case 35 ; Scythe
		Return True
	Case 36 ; Spear
		Return True
	EndSwitch
	Return False
EndFunc
Func KeepDivineFavorWeapons($aItem)
	Local $lWeaponType = GetItemType($aItem)

	Switch $lWeaponType
	Case 2 ; Axe
		Return False
	Case 5 ; Bow
		Return False
	Case 15 ; Hammer
		Return False
	Case 22 ; Wand
		Return False
	Case 26 ; Staff
		Return False
	Case 27 ; Sword
		Return True
	Case 32 ; Daggers
		Return False
	Case 35 ; Scythe
		Return False
	Case 36 ; Spear
		Return True
	EndSwitch
	Return False
EndFunc
Func KeepSpawningPowerWeapons($aItem)
	Local $lWeaponType = GetItemType($aItem)

	Switch $lWeaponType
	Case 2 ; Axe
		Return True
	Case 5 ; Bow
		Return False
	Case 15 ; Hammer
		Return False
	Case 22 ; Wand
		Return False
	Case 26 ; Staff
		Return False
	Case 27 ; Sword
		Return True
	Case 32 ; Daggers
		Return False
	Case 35 ; Scythe
		Return False
	Case 36 ; Spear
		Return True
	EndSwitch
	Return False
EndFunc
Func KeepCritStrikeWeapons($aItem)
	Local $lWeaponType = GetItemType($aItem)

	Switch $lWeaponType
	Case 2 ; Axe
		Return True
	Case 5 ; Bow
		Return True
	Case 15 ; Hammer
		Return True
	Case 22 ; Wand
		Return False
	Case 26 ; Staff
		Return False
	Case 27 ; Sword
		Return True
	Case 32 ; Daggers
		Return False
	Case 35 ; Scythe
		Return True
	Case 36 ; Spear
		Return True
	EndSwitch
	Return False
EndFunc
Func KeepLeadershipWeapons($aItem)
	Local $lWeaponType = GetItemType($aItem)

	Switch $lWeaponType
	Case 2 ; Axe
		Return False
	Case 5 ; Bow
		Return False
	Case 15 ; Hammer
		Return False
	Case 22 ; Wand
		Return True
	Case 26 ; Staff
		Return True
	Case 27 ; Sword
		Return True
	Case 32 ; Daggers
		Return False
	Case 35 ; Scythe
		Return False
	Case 36 ; Spear
		Return False
	EndSwitch
	Return False
EndFunc
Func KeepMysticismWeapons($aItem)
	Local $lWeaponType = GetItemType($aItem)

	Switch $lWeaponType
	Case 2 ; Axe
		Return False
	Case 5 ; Bow
		Return False
	Case 15 ; Hammer
		Return False
	Case 22 ; Wand
		Return True
	Case 26 ; Staff
		Return True
	Case 27 ; Sword
		Return True
	Case 32 ; Daggers
		Return False
	Case 35 ; Scythe
		Return False
	Case 36 ; Spear
		Return True
	EndSwitch
	Return False
EndFunc
Change the 'KeepXWeapons' as you see fit so you only keep the mods you want.

Enjoy and post here if there are any problems with it.

EDIT: Depending on what GWA2 version you are using, you may need to change 'GetItemType' to 'DllStructGetData($aItem, "Type")'
Underavelvetmoon is offline  
Reply

« Beginners Guide | - »

Similar Threads Similar Threads
Keiran GWA2 Version PvEovled
07/02/2014 - GW Exploits, Hacks, Bots, Tools & Macros - 7 Replies
Closed because no feedback from community
[GWA2] War Supply Bot
06/01/2014 - Trading - 0 Replies
Opening up a thread here again to advertise my war supply bot. I've sold over 80 copies on ************ and sold it a couple times to epvpers a few years ago. You can reach me on ************ or on skype: raskofshadows. Prices are set in stone and source is available for a fee.
gwa2 autoit broblem
04/06/2014 - GW Bots - 0 Replies
Hat Sich Erledigt kann Gelöscht werden ^^
GWA2 A/mo Vaettir Bot; Need Help!!
02/19/2012 - GW Bots - 1 Replies
http://www.elitepvpers.com/forum/gw-exploits-hacks -bots-tools-macros/1568881-gwa-vaettir-mo-farm-bot .html ENGLISH: I can't seem to get this to work. I've spent 3-4 hours, read the entire thread here, tried to search for a detailed guide on how to get this to work but it's not. What I've done was: Downloaded the 2 files shown in the Original Post... "GWA2 A_Mo Vaettirs Farm by bl4ck3lit3.zip" Extracted it to desktop Ran GW.EXE as admin. Set-up assassin with appropriate gear and...



All times are GMT +1. The time now is 09:53.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.