Jump to content

Bugreporter

WRobot user
  • Posts

    438
  • Joined

  • Last visited

Reputation Activity

  1. Like
    Bugreporter got a reaction from ivansosajigga in Snippets of LUA codes (for FightClass)   
    A better Buffcheck.
    The charm of this check is:
    you dont need to check all 40 possible buffs you can access the buff with his name (clearer code) and because you access with the name, you dont get trouble with change buff id's and you can check simple buff combinations without check twice  
     
    local Moonfire=GetSpellInfo(155625) local t=GetTime(); local buffexp,buff,buffcnt={},{},{}; local i,n,c,x,id,found=0; repeat i=i+1; n,_,_,c,_,_,x,_,_,_,id=UnitAura("target",i,"PLAYER HARMFUL"); if n then buffcnt[n]=c buffexp[n]=x-t buff[n]=id; found=true end until (not n) or (i==40); if found then if buff[Moonfire] then ... end end  
  2. Like
    Bugreporter got a reaction from Hapiguy in help me please (RDruid)   
    the second user in this forum, that lands on my ignore list....
  3. Like
    Bugreporter got a reaction from eeny in help me please (RDruid)   
    the second user in this forum, that lands on my ignore list....
  4. Like
    Bugreporter reacted to Droidz in Snippets codes for quest profiles   
    Dump all quests in "Quests log" with lua
    ret = ''; local numEntries, numQuests = GetNumQuestLogEntries(); for questLog = 1, numEntries do local questTitle, _, _, _, _, _, _, id = GetQuestLogTitle(questLog); if id > 0 and questTitle then local q = '\n================='; q = q .. '\n' .. tostring(questTitle) .. ' (' .. id .. ')'; local numObjectives = GetNumQuestLeaderBoards(questLog); for i=1,numObjectives do local description, objectiveType, isCompleted = GetQuestLogLeaderBoard(i,questLog); if description then q = q .. '\nObjective count: ' .. i .. ', Description: ' .. tostring(description) .. ', ObjectiveType: ' .. tostring(objectiveType) .. ', IsCompleted: ' .. tostring(isCompleted); end end q = q .. '\n================='; print(q); ret = ret .. q; end end Go to WRobot tab "Tools" > "Development Tools" > paste this lua code in textbox and click on button "Lua (return value in 'ret')"
  5. Like
    Bugreporter got a reaction from MrBottie in Fight Class Questions   
    Interrupts: Simple. You have the starttime of the cast/channel. Now check, if the cast is "old enough" to interrupt.
    Distance: not really possible in LUA. Targets Level is simple: UnitLevel
  6. Like
    Bugreporter got a reaction from chapperz in How to use trinket   
    I used this snippet in my old fightclasses
    SinisterStrike (1792) is just to check, if the target is in range. Use a spell of your spellbook which have the same range as the trinket.
     
    <FightClassSpell> <FightClassConditions> <FightClassCondition> <ContionType>LuaScript</ContionType> <Param xsi:type="FightClassConditionLua"> <LuaScript> if UnitExists("target") then if not UnitIsFriend("player", "target") and not UnitIsDead("target") then if not IsStealthed() then local slot="Trinket0Slot" local SinisterStrike=GetSpellInfo(1752) if (GetComboPoints("player") > 0) and (IsSpellInRange(SinisterStrike,"target")==1) then local slotId, texture, checkRelic = GetInventorySlotInfo(slot) local itemId = GetInventoryItemID("player", slotId) local start, duration, enable = GetItemCooldown(itemId) if (duration==0) then UseInventoryItem( slotId ); result=true end end end end end </LuaScript> <VarRet>result</VarRet> <ValueRet>true</ValueRet> </Param> </FightClassCondition> </FightClassConditions> <SpellName>--use 13 (first trinket)</SpellName> <CombatOnly>false</CombatOnly> <CastIfMounted>true</CastIfMounted> <CheckIfKnow>false</CheckIfKnow> <CheckIfSpellUsable>false</CheckIfSpellUsable> <CheckSpellDistance>false</CheckSpellDistance> <AddToSettings>true</AddToSettings> <NotSpellIsLuaScript>true</NotSpellIsLuaScript> <CanMoveDuringCast>Yes</CanMoveDuringCast> <DescriptionSpell>/use 13</DescriptionSpell> </FightClassSpell>  
  7. Like
    Bugreporter got a reaction from Senseye in [Suche] Todesritter Blut   
    Please wrote, which skills are you missing. Maybe @DRWolf can add them to his profile. (or wrote to him direct)
    Most of the profiles dont support all skills, becaase of to less dps or worst realising.
  8. Like
    Bugreporter got a reaction from Drwolftech in How cast Sidewinders before reach 2 stacks   
    GetSpellCharges do, what you want. Its not difficult to check if there are 2 charges. But it could very difficult to check, if you used one before (and want now used the second one). With my Sub-Rogue i can check a buff (31223) which exist 5 sec's longer then shadowdance (185313). (but only if a special talent used)
     
    local spellname=GetSpellInfo(36554) --[[ Shadowstep ]] if UnitExists("target") and not UnitIsFriend("player", "target") and (IsSpellInRange(spellname,"target")==1) and (UnitHealth("target")&gt;1) then local currentCharges, maxCharges, cooldownStart, cooldownDuration = GetSpellCharges(185313) local now=GetTime(); if (currentCharges&gt;=2) or ((UnitBuff("player",GetSpellInfo(31223))~=nil) and (currentCharges~=0)) then result=true --[[ Stealth, Shadow Dance or Subterfuge ]] if IsStealthed() or (UnitBuff("player",GetSpellInfo(185313))~=nil) or (UnitBuff("player",GetSpellInfo(108208))~=nil) then result=false end end end  
  9. Like
    Bugreporter got a reaction from knights in Put DoTs on multiple target   
    I've add a routine in my Rogue Assa Profile. But be aware, you will lose your main target. And @Jhin : You dont want pull all Targets in a range of 45 yard ! Thats a hunter spell and is called barrage. ;-)
    2. Line:  check if we have a target and if it is in range (in this case a Meele spell, Rupture). Use your spell with the smallest range, that you want provide
    3+4 Line: Other Buffs that we want check
    6.Line (from the bottom): Check if the DeBuffs are on the target up and running and if they are run long enough. In this case rupture must run longer then 6 seconds
    5.Line (from the bottom); next target will be selected
    In the next Code window  i've pasted the XML-Snippet to cut-and-past-and-change it in you fightclass
    local Rupture=GetSpellInfo(1943) if UnitExists("target") and not UnitIsFriend("player", "target") and (IsSpellInRange(Rupture,"target")==1) then local CripplingPoison=GetSpellInfo(3408) local DeadlyPoison=GetSpellInfo(2823) local t=GetTime(); local buffexp,buff,buffcnt,bufftyp={},{},{},{}; local i,n,c,y,x,id,found=0; repeat i=i+1; n,_,_,c,y,_,x,_,_,_,id=UnitAura("target",i,"PLAYER HARMFUL"); if n then buffcnt[n]=c bufftyp[n]=y buffexp[n]=x-t buff[n]=id; found=true end until (not n) or (i==40); if found then if (buff[Rupture] and buffexp[Rupture] &gt; 6) and buff[CripplingPoison] and buff[DeadlyPoison] then TargetNearestEnemy() result=true end end end; XML-snippet: (dont forget to change the value in "HostileUnitNear")
    <FightClassSpell> <FightClassConditions> <FightClassCondition> <ContionType>HostileUnitNear</ContionType> <Param xsi:type="FightClassConditionUnitNear"> <Number>2</Number> <Type>BiggerOrEqual</Type> <Radius>5</Radius> </Param> </FightClassCondition> <FightClassCondition> <ContionType>LuaScript</ContionType> <Param xsi:type="FightClassConditionLua"> <LuaScript> local Rupture=GetSpellInfo(1943) if UnitExists("target") and not UnitIsFriend("player", "target") and (IsSpellInRange(Rupture,"target")==1) then local CripplingPoison=GetSpellInfo(3408) local DeadlyPoison=GetSpellInfo(2823) local t=GetTime(); local buffexp,buff,buffcnt,bufftyp={},{},{},{}; local i,n,c,y,x,id,found=0; repeat i=i+1; n,_,_,c,y,_,x,_,_,_,id=UnitAura("target",i,"PLAYER HARMFUL"); if n then buffcnt[n]=c bufftyp[n]=y buffexp[n]=x-t buff[n]=id; found=true end until (not n) or (i==40); if found then if (buff[Rupture] and buffexp[Rupture] &gt; 6) and buff[CripplingPoison] and buff[DeadlyPoison] then TargetNearestEnemy() result=true end end end; </LuaScript> <VarRet>result</VarRet> <ValueRet>true</ValueRet> </Param> </FightClassCondition> </FightClassConditions> <SpellName>--NextEnemy</SpellName> <Priority>2</Priority> <CheckIfKnow>false</CheckIfKnow> <CheckIfSpellUsable>false</CheckIfSpellUsable> <CheckSpellDistance>false</CheckSpellDistance> <CheckIfView>false</CheckIfView> <AddToSettings>true</AddToSettings> <AddToSettingsActiveByDefault>true</AddToSettingsActiveByDefault> <NotSpellIsLuaScript>true</NotSpellIsLuaScript> </FightClassSpell>  
  10. Like
    Bugreporter got a reaction from Jhin in Put DoTs on multiple target   
    I've add a routine in my Rogue Assa Profile. But be aware, you will lose your main target. And @Jhin : You dont want pull all Targets in a range of 45 yard ! Thats a hunter spell and is called barrage. ;-)
    2. Line:  check if we have a target and if it is in range (in this case a Meele spell, Rupture). Use your spell with the smallest range, that you want provide
    3+4 Line: Other Buffs that we want check
    6.Line (from the bottom): Check if the DeBuffs are on the target up and running and if they are run long enough. In this case rupture must run longer then 6 seconds
    5.Line (from the bottom); next target will be selected
    In the next Code window  i've pasted the XML-Snippet to cut-and-past-and-change it in you fightclass
    local Rupture=GetSpellInfo(1943) if UnitExists("target") and not UnitIsFriend("player", "target") and (IsSpellInRange(Rupture,"target")==1) then local CripplingPoison=GetSpellInfo(3408) local DeadlyPoison=GetSpellInfo(2823) local t=GetTime(); local buffexp,buff,buffcnt,bufftyp={},{},{},{}; local i,n,c,y,x,id,found=0; repeat i=i+1; n,_,_,c,y,_,x,_,_,_,id=UnitAura("target",i,"PLAYER HARMFUL"); if n then buffcnt[n]=c bufftyp[n]=y buffexp[n]=x-t buff[n]=id; found=true end until (not n) or (i==40); if found then if (buff[Rupture] and buffexp[Rupture] &gt; 6) and buff[CripplingPoison] and buff[DeadlyPoison] then TargetNearestEnemy() result=true end end end; XML-snippet: (dont forget to change the value in "HostileUnitNear")
    <FightClassSpell> <FightClassConditions> <FightClassCondition> <ContionType>HostileUnitNear</ContionType> <Param xsi:type="FightClassConditionUnitNear"> <Number>2</Number> <Type>BiggerOrEqual</Type> <Radius>5</Radius> </Param> </FightClassCondition> <FightClassCondition> <ContionType>LuaScript</ContionType> <Param xsi:type="FightClassConditionLua"> <LuaScript> local Rupture=GetSpellInfo(1943) if UnitExists("target") and not UnitIsFriend("player", "target") and (IsSpellInRange(Rupture,"target")==1) then local CripplingPoison=GetSpellInfo(3408) local DeadlyPoison=GetSpellInfo(2823) local t=GetTime(); local buffexp,buff,buffcnt,bufftyp={},{},{},{}; local i,n,c,y,x,id,found=0; repeat i=i+1; n,_,_,c,y,_,x,_,_,_,id=UnitAura("target",i,"PLAYER HARMFUL"); if n then buffcnt[n]=c bufftyp[n]=y buffexp[n]=x-t buff[n]=id; found=true end until (not n) or (i==40); if found then if (buff[Rupture] and buffexp[Rupture] &gt; 6) and buff[CripplingPoison] and buff[DeadlyPoison] then TargetNearestEnemy() result=true end end end; </LuaScript> <VarRet>result</VarRet> <ValueRet>true</ValueRet> </Param> </FightClassCondition> </FightClassConditions> <SpellName>--NextEnemy</SpellName> <Priority>2</Priority> <CheckIfKnow>false</CheckIfKnow> <CheckIfSpellUsable>false</CheckIfSpellUsable> <CheckSpellDistance>false</CheckSpellDistance> <CheckIfView>false</CheckIfView> <AddToSettings>true</AddToSettings> <AddToSettingsActiveByDefault>true</AddToSettingsActiveByDefault> <NotSpellIsLuaScript>true</NotSpellIsLuaScript> </FightClassSpell>  
  11. Like
    Bugreporter got a reaction from Arcangelo in Snippets of LUA codes (for FightClass)   
    A better Buffcheck.
    The charm of this check is:
    you dont need to check all 40 possible buffs you can access the buff with his name (clearer code) and because you access with the name, you dont get trouble with change buff id's and you can check simple buff combinations without check twice  
     
    local Moonfire=GetSpellInfo(155625) local t=GetTime(); local buffexp,buff,buffcnt={},{},{}; local i,n,c,x,id,found=0; repeat i=i+1; n,_,_,c,_,_,x,_,_,_,id=UnitAura("target",i,"PLAYER HARMFUL"); if n then buffcnt[n]=c buffexp[n]=x-t buff[n]=id; found=true end until (not n) or (i==40); if found then if buff[Moonfire] then ... end end  
  12. Like
    Bugreporter got a reaction from Droidz in Snippets of LUA codes (for FightClass)   
    A better Buffcheck.
    The charm of this check is:
    you dont need to check all 40 possible buffs you can access the buff with his name (clearer code) and because you access with the name, you dont get trouble with change buff id's and you can check simple buff combinations without check twice  
     
    local Moonfire=GetSpellInfo(155625) local t=GetTime(); local buffexp,buff,buffcnt={},{},{}; local i,n,c,x,id,found=0; repeat i=i+1; n,_,_,c,_,_,x,_,_,_,id=UnitAura("target",i,"PLAYER HARMFUL"); if n then buffcnt[n]=c buffexp[n]=x-t buff[n]=id; found=true end until (not n) or (i==40); if found then if buff[Moonfire] then ... end end  
  13. Like
    Bugreporter got a reaction from eeny in download statistic cleanup   
    I dont know why, but I have a lot of duplicates of downloads at the same time and from the same user. Good for the statistic, but not really informative. Maybe it would better to cleanup all statistics from duplicate User-downloads and count only the latest download from the same user. And I think this problem is not only at my file.statistics.
    Additional feature: Inform the Users, who have downloaded an older Version, that a new version is available. (i.e. Forum Notification, enable/disable per file)
    Additional feature: Statistic how many users downloaded which Version (make only sense with the feature above)
  14. Like
    Bugreporter got a reaction from Krack3n in Question about WRotation   
    Normaly its not nessesary, if you have a good fightclass. The Fightclass can detect if there was one or more targets (If the Programmer of the Fightclass know what he do).
     
    HostileUnitNear do the job.
     
     
  15. Like
    Bugreporter got a reaction from Runaro in Question about WRotation   
    Normaly its not nessesary, if you have a good fightclass. The Fightclass can detect if there was one or more targets (If the Programmer of the Fightclass know what he do).
     
    HostileUnitNear do the job.
     
     
  16. Like
    Bugreporter got a reaction from Krack3n in Iron Trap (How to use it)   
    It works fine in wrotation, but not in grinder, because the mobs mostly doesn't stand still in the trap (i.e. Talbuks) You need the barn in your Garrison It's optional and off by default You need to add the ID of the mobs you want to catch to the Variable KillBeast. (wowhead.com and the Development tools/Target Info will help)  
    This  code enable the Iron Trap in your Fightclass. Happy farming
    <FightClassSpell> <SpellName>--Iron Trap</SpellName> <FightClassConditions> <FightClassCondition> <ContionType>LuaScript</ContionType> <Param xsi:type="FightClassConditionLua"> <LuaScript> local function UseContainerItemByName(search) --[[ needed below ]] local found=nil; for bag = 0,4 do for slot = 1,GetContainerNumSlots(bag) do local item = GetContainerItemLink(bag,slot) if (item and item:find(search)) then if (GetContainerItemCooldown(bag,slot)==0) then UseContainerItem(bag,slot) found=1; end end end end return found; end if not (IsStealthed()) and UnitExists("target") and not UnitIsFriend("player", "target") then local guid=UnitGUID("target"); local type, zero, serverId, instanceId, zoneId, npcId, spawnUid = strsplit("-",guid); npcId=tonumber(npcId); --[[ Add your Mob-IDs to the list ]] local KillBeast="87021,87020" --[[ list of ID's of Mobs to trap, comma seperated ]] local maxHealth=95; --[[ start Trap at 95% of health for non-elite Mobs ]] if (UnitClassification("target") == "elite") then maxHealth=55 --[[ start Trap at 55% of health if it is an Elite Mob ]] end if not (UnitIsPVP("target")) and ((UnitHealth("target") / UnitHealthMax("target") * 100) &lt; maxHealth ) and (string.find(','..KillBeast..',',','..npcId..',')) then if (UnitName("player")==UnitName("targettarget")) then --[[ no Ninjaing, my Mob, my target, my trap ]] result=true if not (UseContainerItemByName(":115010:")) then --[[ Level 3 Trap must be equiped and ready]] if not (UseContainerItemByName(":115009:")) then --[[ Level 2 Trap .. ]] if not (UseContainerItemByName(":113991:")) then --[[ Level 1 Trap .. ]] result=false end end end else --[[ the fight is over, or another User Fight to them ]] ClearTarget(); end end end </LuaScript> <VarRet>result</VarRet> <ValueRet>true</ValueRet> </Param> </FightClassCondition> </FightClassConditions> <Priority>99</Priority> <CheckIfKnowUsableDistance>false</CheckIfKnowUsableDistance> <CheckIfView>false</CheckIfView> <AddToSettings>true</AddToSettings> <NotSpellIsLuaScript>true</NotSpellIsLuaScript> </FightClassSpell>
  17. Like
    Bugreporter got a reaction from highco in First Fightclass with full Nagrand Mount support !!!   
    I am happy to proudly present you the very first fightclass with Frostwolf War Wolf and Telaari Talbuk support.
     
    The Fightclass is for Combat Rogue and can be downloaded
    All fights can be done mounted. But, because wrobot did not support Frostwolf War Wolf  and Telaari Talbuk at the moment, only wrotation makes sense. With other Products you will be unmounted. Sorry
     
    Also new:
     Evasion (if health under 50 % and you are the target)  Feint if a spell is not kickable. Because AoE is not very detectable, its not the best solution, but if you have a better Idea, send me a message.
  18. Like
    Bugreporter reacted to GTXMike in [POLL] Do you want versions of WRobot for Wow private servers?   
    I say NO. Why? Content we download should be designed for current version of the game, we gonna end up with profiles and plugins or other stuff that simply don't work which will only increase amount of topics with problems, bugs etc etc.
  19. Like
    Bugreporter got a reaction from Droidz in add THIS to your fightclass (auto crate)   
    This "spell" crate restored artefacts . No full bags anymore (not with pandarian or draenor artefacts)
        <FightClassSpell>       <FightClassConditions>         <FightClassCondition>           <ContionType>LuaScript</ContionType>           <Param xsi:type="FightClassConditionLua">             <LuaScript> local function UseContainerItemByIDList(search)   --[[ needed below ]]   local found=nil;   for bag = 0,4 do     for slot = 1,GetContainerNumSlots(bag) do       local itemLink = GetContainerItemLink(bag,slot)       if itemLink then         local _, _, Color, Ltype, Id, Enchant, Gem1, Gem2, Gem3, Gem4, Suffix, Unique, LinkLvl, Name = string.find(itemLink,"|?c?f?f?(%x*)|?H?([^:]*):?(%d+):?(%d*):?(%d*):?(%d*):?(%d*):?(%d*):?(%-?%d*):?(%-?%d*):?(%d*):?(%d*):?(%-?%d*)|?h?%[?([^%[%]]*)%]?|?h?|?r?")                 if Id then           search=','..search..',';           if (search:find(","..Id..",")) then             if (GetContainerItemCooldown(bag,slot)==0) then                 UseContainerItem(bag,slot)                 found=1;             end           end;         end       end     end   end   return found; end if (GetUnitSpeed("player") == 0) and not (UnitCastingInfo("player")) and not (UnitChannelInfo("player")) and not (UnitAffectingCombat("player")) and not (IsFlying())  and not (IsFalling())  and not (IsResting())  and not (UnitIsAFK("player")) then     if not IsStealthed() then         local goodMountBuff={164222,165803}         local goodMount=false         for n=1,#goodMountBuff do goodMount=goodMount or (UnitBuff("player",GetSpellInfo(goodMountBuff[n]))~=nil); end         if (not IsMounted()) or goodMount then             --[[ Add your Mob-IDs to the list ]]             local archlist="114141,114143,114145,114147,114149,114151,114153,114155,114157,114159,114161,114163,114165,114167,114169,114171,114173,114175,114177,114179,114181,114183,114185,114187,114189,114190,114191,114192,114193,114194,114195,114196,114197,114198,114199,114200,114201,114202,114203,114204,114205,114206,114207,79896,79897,79898,79899,79900,79901,79902,79903,79904,79905,79908,79909,79910,79911,79912,79913,79914,79915,79916,79917,95375,95376,95377,95378,95379,95380,95381,95382"             if (UseContainerItemByIDList(archlist)) then                            result=true;             end         end     end; end </LuaScript>             <VarRet>result</VarRet>             <ValueRet>true</ValueRet>           </Param>         </FightClassCondition>       </FightClassConditions>       <SpellName>--Use Item, if exist</SpellName>       <Priority>1</Priority>       <CombatOnly>false</CombatOnly>       <CastIfMounted>true</CastIfMounted>       <CheckIfKnow>false</CheckIfKnow>       <CheckIfSpellUsable>false</CheckIfSpellUsable>       <CheckSpellDistance>false</CheckSpellDistance>       <CheckIfView>false</CheckIfView>       <AddToSettings>true</AddToSettings>       <NotSpellIsLuaScript>true</NotSpellIsLuaScript>     </FightClassSpell>
  20. Like
    Bugreporter got a reaction from Droidz in Protection Warrior   
    If just released my first Enjoy.
     
    I've never tested it in Dungeons, so be careful on your first usage. I dont know if it will be a good tank, but it will be a good farmer.
  21. Like
    Bugreporter got a reaction from da8ball in First Fightclass with full Nagrand Mount support !!!   
    I am happy to proudly present you the very first fightclass with Frostwolf War Wolf and Telaari Talbuk support.
     
    The Fightclass is for Combat Rogue and can be downloaded
    All fights can be done mounted. But, because wrobot did not support Frostwolf War Wolf  and Telaari Talbuk at the moment, only wrotation makes sense. With other Products you will be unmounted. Sorry
     
    Also new:
     Evasion (if health under 50 % and you are the target)  Feint if a spell is not kickable. Because AoE is not very detectable, its not the best solution, but if you have a better Idea, send me a message.
  22. Like
    Bugreporter got a reaction from guessgr in [FISHING REQUEST] Nat Pagle Anglers?   
    Nat Pagle is npc 85984 .
     
    Needed are 5 x  Fire Ammonite Lunker (id 116819) . The limit is 5. so you cant fishing more then these 5. Afer this you must go back to Nat.
     
    the quest Fire Ammonite Lunker  (id 36800) is repeatable.  (Blue Questionmark).  Garrison need to be level 3
     
    For Horde the Fire Ammonite is the nearest spot. (12,43 : 59,71) . The spot is inside  the Garrison map (we can read /2 channel) but we already see other people (and they us). so its a border region.
     
    Alliance best should be Blind Lake Lunker (id 36804)
  23. Like
    Bugreporter got a reaction from Droidz in Useful Addons   
    Hi, here a few very useful legal addons for WoW, which could you help botting:
     
     
    Gathering:
     
    Routes create an optimal route between the Ore and Herbs spawns. The informations about the spawn points came from Gathermate2 and Gatermate2_data, so you have to install this addon too.
     
    Pet Battle:
     
    Rematch Much better then PetTabs (or similiar). It select your favorite team automatic, if you (or the bot) start the pet battle. You can also define a list of leveling Pets, which do you want to level. The will rotate, if the selected leveling pet dies or reach level 25
     
     
     
    If you have also suggestions for "must have" addons, please post them in this thread. I will add them to the list.
  24. Like
    Bugreporter got a reaction from onipushpads in I have a new grinding profile [SUMPTOUS FUR extreme]   
    Could you please upload it under Download/Profile/Grinder ? The most people look there for profiles.
     
    Thanks.
  25. Like
    Bugreporter got a reaction from Droidz in working combat rogue profile   
    Updated:
     
    - Better AOE Raid support (Blade Flurry with ignore list) - Iron Trap (with kill list) - some small improvments (start attack, sprint) - Shuriken Toss support
×
×
  • Create New...